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

Posted by Karsten at 18:41 | Comments (0) | TrackBack

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)

Posted by Karsten at 18:39 | Comments (0) | TrackBack

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:

  • JavaPolis started today
  • [JP] Day 1 - Business Rules and Drools
  • [JP] Day 1 - BOF on Eclipse RCP
  • [JP] Day 2 - Spring Middle Tier and Spring 2.0
  • [JP] Day 2 - Radrace
  • [JP] Day 4 - Glassfish
  • [JP] Day 5 - DataBase Refactoring

    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!!!

    Posted by Karsten at 19:38 | Comments (0) | TrackBack
  • 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:

    1. First of all you introduce the new schema
    2. keeping the old one alive for a certain period and mark it as deprecated (no Toolsupport!!)
    3. keep both (old and new style) in sync via triggers

    and some examples:
    [... see Databaserefactoring.com]

    Some sidenotes:

  • put all DB-stuff under Version Control, including schema generation scripts, triggers, procedures, ...
  • every developer has her own DB schema to easily apply changes to the DB and the code an roll both out at once into integration
  • If you can refactor applications with toolsupport since years, why can't you refactor database schemas? (this reminds me of the trained monkey talk ...)

    If you want to have a refactorable system stick to two rules:

  • any new system has to be refactorable
  • with any code change the touched part should be refactorable

    The DatabaseTools Project at Eclipse might bring some tool support for refactorings.
    For DB-Regression testing there are already some tools like:

  • OUnit
  • Check for C
  • VBUnit
  • DBUnit

    Posted by Karsten at 19:49 | Comments (0) | TrackBack
  • 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

    Posted by Karsten at 20:04 | Comments (0) | TrackBack

    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:

  • Know your tools and know them well.
  • Make a choice and stick to it.
  • forget "flavour of the month"
  • good habits never fail:
    + 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.

    Posted by Karsten at 20:05 | Comments (0) | TrackBack
  • 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 :))

    Posted by Karsten at 19:45 | Comments (0) | TrackBack

    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.

    Posted by Karsten at 23:23 | Comments (0) | TrackBack

    [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:

  • Rules are mainly like SQL with many mathing tables and joins.
  • OR is something dangerous and should be avoided where possible. Often missused by beginners.
  • Rules are the Knowledge Expert System, Facts are hold in the Working Memory and PatternMatching between the two causes actions to fire

    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:

  • + BusinessAnalysts understand the rules
  • + BusinessAnalysts can change them and therefore feel responsible for them and the rules are always up-to-date
  • + BusinessAnalysts can identify interference between rules
  • + it is easy to change the rules, so if you deal with often changing rules, give a BusinessRules a try
  • + with JMS you are able to change the rules, without a redeploy of an application, which sounds very nice
  • + only changed items cause a reevaluation. Everything else will not be recalculated

    Minus for Drools/BusinessRules:

  • - high learning curve since it is a different paradigma than coding in a programming language
  • - Performance problems if not applied correctly, can be solved with better knowledge
  • - the learning curve
  • - if you do not have at least a week of free time to experiment with it, forget it. There is a high learning curve involved!!!

    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.

    Posted by Karsten at 20:02 | Comments (2) | TrackBack
  • [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.

    Posted by Karsten at 10:43 | Comments (0) | TrackBack