19.12.05
Error at actuate.com shows SQL Server
This ErrorSite actuate.com
showed that they use SQLServer:
Microsoft OLE DB Provider for SQL Server error '80040e10'
No value given for one or more required parameters.
/view/viewcontent.asp, line 94
Error at Reportenginges.com shows Tomcat
Apache Tomcat/4.1.18 - Error report
Showed:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:822)
at org.apache.jsp.viewcontent_jsp._jspService(viewcontent_jsp.java:197)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:822)
at org.apache.jsp.partnerbin_jsp._jspService(partnerbin_jsp.java:41)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Unknown Source)
root cause
javax.servlet.ServletException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:533)
at org.apache.jsp.review1_jsp._jspService(review1_jsp.java:263)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
17.12.05
[JP] Summary
So JavaPolis is over since yesterday. I finally made it back home to a reliable network, so I can blog again.
After submitting the first entry directly on Monday I was never again able to post a new blogentry through the crapy WLAN there.
So I will try to post about more of the talks here. Keep up-to-date for the next few days. I will list them here:
Some facts and figures about JavaPolis:
2.100+ JavaPolian
150+ Speakers
from 43 countries (Germany on 3rd place); no one from Portugal. Already last year there was noone from Portugal attending JavaPolis, so there must be something wrong with this country. Are they only doing .NET??
48% Belgians compared to 70% Belgians in 2004.
The slides will be faster available than last time, but the DVD hast to wait until March 2006 onwards.
The content will be spread to Javalobby (Conference Day 1), TheServerSide (Conf. Day 2), JavaPolis Wiki (Conf. Day 3), InfoQ (some content) and others.
11.500 registered wiki-members
This was by far the best conference I attended ever. So I can highly recommend to go there if you are into Java. Thanks guys at BeJUG for making this happen!!!
16.12.05
[JP] Day 5 - DataBase Refactoring
Actually I must confess that I never thought about refactoring in the domain of databases. But it perfectly makes sense.
Scott W. Ambler is a nice presenter (definetly rather the north american style of presenting, but still with good content). So he was raising a lot of questions and interacting with the audience quite nicely.
Why are DB-people feel so important? Why do they need days/weeks to roll out changes to the DB? Why is therefore every developer bypassing them, making them angry although they should start thinking about the reasons for this move.
Data modeling is unsexy, just like Testing was, before the agile community took over this field, raising the bar of expectations, making testing easy and sexy. Best example is JUnit and plenty of other tools in this field.
So the agile community needs to take over and reinvent data modeling.
So if there is a DB guy in you company thinking that DB things are sooooo important ask him about regression test for the DB. Nearly noone has this in that field, but is a best-practice in the developer world.
Referenced integrity is not really an issue of the DB, since you have to keep track of dependecies in you OO-Program as well and there it is quite obvious.
Nevertheless: Data is important!
... Just like UI is important, and network, and security, and business processing, and 10 other things the developers are taking care of.
At Databaserefactoring.com you find further information about how you can refactor a DB.
Scott walked us through the general procedure:
- First of all you introduce the new schema
- keeping the old one alive for a certain period and mark it as deprecated (no Toolsupport!!)
- keep both (old and new style) in sync via triggers
and some examples:
[... see Databaserefactoring.com]
Some sidenotes:
If you want to have a refactorable system stick to two rules:
The DatabaseTools Project at Eclipse might bring some tool support for refactorings.
For DB-Regression testing there are already some tools like:
15.12.05
[JP] Day 4 - Glassfish
Glassfish is the RI (Reference Implementation) of the Java EE 5 Application Server, which gets developed mainly by Sun in conjunction with Oracle.
So they are using an evolved TopLink for the JPA (Java Persistence API) which is better known as EJB 3.0, although EJB is more than that and the JPA will have live beyond EJB.
Beside being the RI of Java EE 5.0 Glashfish offers two nice features:
CallFlow
+ Profiling
+ Monitoring
+ you can turn it on/off at any time
Grizzly
+ HTTP-Framework
+ uses NIO
+ non-blocking sockets for HTTP-Processing
+ integrates into Tomcat
+ replaces Tomcats frontend and will be handed over to Tomcat
+ a lot faster (between 5 and 500 times) then old I/O-style thread processing
14.12.05
[JP] Day 2 - Radrace
There was a RAD Race going on the second day at JavaPolis and the next day was the winner anouncement. If you want further information about RAD Race go to radrace.org and see all the details to the setting, rules, etc.
These are the main things you should keep in mind, when doing a RAD Race:
+ data modeling
+ no beta software
+ know your tools
There were 3 winning teams. Oracle JDeveloper was used by 2 of the 3 winners. Oracle send one of their ADF-Champions into the RAD race.
Further details on who used which tools will get posted on the JavaPolis Wiki.
13.12.05
[JP] Day 2 - Spring Middle Tier and Spring 2.0
Jürgen Höller and Rob Harrop did the best presentation so far about hot topics in Spring's Middle Tier Services and the upcoming Spring 2.0 release.
XML-Configuration
Introduces XML-Schema and new Custom tags, with the following advantages:
- Easier to write
- Easier to read
- Better tool support (Schema-validation is far more powerful than a DTD)
Here came a quick demo showing the validation/code-assist possible with Schema, so one easily knows which fields are required and where only certain enumeration values or boolean values can be filled in. With the simple DTD-Validation there is no tool support for this.
The new techniques are fully backward compatible, you can even mix both styles in one configuration file and this will be how most apps will look like.
The old style is the generic configuration and the new custom tags are for rather specific problems.
So the custom tags aims not at simplifying your application configuration regaring your beands/application dependencies, but rather at infrastructure tasks (JNDI, AOP, Transactions, ...) and 3rd party packages (like Acegi Security).
The custom tags shiped in Spring 2.0 M1 will be:
- jndi:lookup
- util:properties
- aop:*
- tx:*
For the final Spring 2.0 Release which is planned for March 2006 the team plans to add more:
- Maps, List, Sets
- JMX
- Remoting
- Scheduling
- MVC
If you plan to extend the custom tags you must implement the NamespaceHandler Interface and provide this implementation within a jar, describing in META-INF/spring.handlers your implementation.
Spring takes care of the rest.
That was the news about the upcoming simplifications in Spring 2.0.
Next topic was Spring AOP and the fruits of having the AspectJ-lead Adrian Coyler now working for Interface21 (the company behind Spring).
AspectJ will be closer integrated into Spring's AOP framework, not only making Spring AOP more powerful but also easing transition between the two.
So the AspectJ expression language is now available in Spring.
Via a @SpringConfigured annotation it should be possible to Dependency Inject any object via AspectJ
In the next section about transactions Jürgen and Rob gave us plenty of demos and examples. It really looks great how the namespaces simplifiy the configuration.
Scheduling Support in Spring 2.0 was one of the things I was personally interessted since we use this feature of Spring already a lot. So here are the news:
- Support for new JDK 5.0 Scheduling Services
- Support for CommonJ TimerManager
- New Interface TaskExecutor with void execute(Runnable task)
Ok, so you might wonder what CommonJ is, just like I did, so here is the explanation:
CommonJ is spezification by BEA and IBM, currently supported by WebLogic Server 9 and WebSphere 6. This way allows a partly vendor indiependent way of solving something.
CommonJ provides a WorkManager which is configured via an administration console and made available to applications as a JNDI-Ressource.
It solves the problem in Application Servers where direct thread-creation is not allowed due to the spec, but nowhere the spec provides access to the functionality of Tasks/Threads and scheduling.
Spring provides default implementations of this interface and the TaskExecutor is also used within Spring:
- for execution of apßplication event listener
- for asynchronous JMS-Message processing
Spring is able to delegate the ThreadManagement of a QuartzScheduler to a CommonJ WorkManager, which enables App.Server compliance scheduling with quartz.
The last section was JMS where they went it a lot great of detail which was far to much to cover here.
Summary
Spring 2.0 looks realy, realy great only from the middle tier side and I guess there will be plenty of other great things in the web tier as well.
The only drawback I see at Spring 2.0: Final Release is scheduled for March 2006. Soooo late! Hello Sun/IBM/"put big company here" you should have scheduled this for March 1996!!!!
The Spring team is clearly my winner of the award: "Best/Smartest Java-Team EVER"
(I just hope Erich Gamma and Kent Beck do not read this, since they are right behind on second place :))
12.12.05
[JP] Day 1 - BOF on Eclipse RCP
This was the latest event on JavaPolis first day (21:40 - 22:40) and not a real presentation, but rather a discussion and demo form.
One of the participants told us from his company and how they decided to go for Eclipse RCP directly when it was announced. The funny part was, that they were looking at Eclipse at a base for their own RichClientApps even before Eclipse announced the RCP.
So the announcement came at the right moment for them to say yes we will take Eclipse as a base, since they even will offer some kind of support for this now.
Later we saw a nice demonstration on how easy it is to build your own RCP. The demo app was an Ebay browser and bidder. I really have to find either some spare time or a way to sell this technology to a client so that I can experiment a bit with it.
Wayne Beaton (RCP Evangelist) was a really good demonstrator and made this BOF a quick and deep one. Thanks.
PS: If you are already using Eclipse RCP or Eclipse itself and you are missing a feature, got a question, found a bug, or similar, Wayne encouraged everybody to use bugzilla to raise these issues.
[JP] Day 1 - Business Rules and Drools
Mark Protor who leads the Drools project gave first an overview over the history of Drools and BusinessRules and the thinking behind them.
Some of Marks statements to Drools/BusinessRules:
As an example of how Drools fires actions an how to control flow via semaphores Marc went through Fibonacci calculation to show us how recursion works the "Drools-Way"
Great Pluses for Drools/BusinessRules:
Minus for Drools/BusinessRules:
All in all the presentation was far to fast - considering non native speakers, non Drools-Experts being in the audience. One slide came fast after the other with quick explanations which just scratched the surface.
[JP] JavaPolis started today
After attending JAX and W-JAX, two Java conferences in Germany, I thought it is time to step up on an international level. The bad sideeffect is the 8 hours journey by train. Luckily I had some sleep on my way here in the German high-speed train ICE.
I was already impressed when I arrieved here. There are hundreds of young people here speaking plenty of european languages. The conference is held in a big movie theatre, so each room is hugh, each room got a hugh, hugh screen and a great sound system, very, very comfortable seats - not so comfortable with a laptop :( - lots, lots of space for the seats. The drawbacks are missing powersupply at my seat, nothing to put the laptop an, besides my knees, and an expensive Wi-Fi for 50 Euro for five days. It really sucks to pay for this at a conference but hey it's the low-cost JavaPolis so I forgive this. Today is University Day and I went to "BusinessRules/Drools" and "EJB 3.0", but more on this later.
