Is IT Mill Toolkit 5 really compatible with servlet 2.3?

Hi,
I’m trying to deploy and run a simple application in WLS8.1 sp6.
I’ll get to following error:

<Dec 16, 2008 12:20:02 PM EET> <[ServletContext(id=24339815,name=test,context-path=/test)]
Root cause of ServletException.
java.lang.NoSuchMethodError: setCharacterEncoding
at com.itmill.toolkit.terminal.gwt.server.ApplicationServlet.writeAjaxPage(ApplicationServlet.java:835)
at com.itmill.toolkit.terminal.gwt.server.ApplicationServlet.service(ApplicationServlet.java:510)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7051)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

I checked the ApplicationServlet.java and find out that there is call response.setCharacterEncoding. That method is not available in servet2.3 and therefore not in WLS8.1.

According to IT Mill web site, Toolkit 5 is :

  • Compatible with servlet specification 2.3 and 2.4
  • BEA WebLogic Server, version 8.1 and later

What didn’t I get or what am I doing wrong? :slight_smile:

Hi!

The setCharacterEncoding method seems to be part of 2.4 specification, so it cannot work :frowning: It has popped there by accident lately. Fixed this right away to trunk. Also added a ticket #2360 to test with all servlet containers we promise to work with.

What version are you using? Just figuring out if you quickly need a 5.2 series build, we can provide one asap.

cheers,
matti

I’m trying to use the latest release: Version 5.2.14.

I hope you guys try coming 5.3.0 version with most popular Application Servers (not just JBOSS), some of them are very picky on how they work with servlets…

I’ll make a 5.2.15 release that contains (probably only) this fix. But it looks that we don’t have that old version (8.1) of WebLogic around. I tested the build with Tomcat 4 and seems to work ok.

I made an RC build for 5.2.15. Please try it and tell if it works in your WL 8.1:


http://www.itmill.com/download/itmill-toolkit/testing/5.2.15/rc1/

Also report other problems you may notice.

Hmm. I think it doesn’t work. I tested with the Calc -example and that code works fine in WLS10, but WLS81 gives a new error message.
I believe that the error is caused by class java.util.UUID. If I’m right, the class is part of Java5 and WLS 8.1 can only use java 1.4.

java.lang.NoClassDefFoundError: java/util/UUID
at com.itmill.toolkit.terminal.gwt.server.CommunicationManager.handleVariables(CommunicationManager.java:606)
at com.itmill.toolkit.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:270)
at com.itmill.toolkit.terminal.gwt.server.ApplicationServlet.service(ApplicationServlet.java:427)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

Unfortunately (starting from version 5.3), Toolkit requires Java 1.5. If this conflicts with WLS81, we are forced to drop WLS81 from the list of supported servers :(

“Solution” proposals:

  • Upgrade to WLS9
  • Do not upgrade from Toolkit 5.2 to 5.3

I would really recommend to not to decide to stay in 5.2 for a longer period of time because 5.2 is not likely to be updated after 5.3 has been released.

Well then I’m a bit confused.
It said on the web page that IT Mill 5 is:

IT Mill Toolkit 5 Compatibility

* Compatible with all web standards, inluding HTTP(S), XHTML, CSS, Javascript and XML
* Supported Java versions: 1.4, 5 and 6.
* Compatible with servlet specification 2.3 and 2.4
* Tested and certified to work with the following browsers:
      o Internet Explorer, version 6.0 and later
      o Firefox, version 2 and later
      o Safari, version 3 and later
      o Opera, version 9
      o The browsers have been tested on the following operating systems:
            + Windows 2000 Professional/2000 Server 2003/XP Server/XP Professional/XP Home
            + Mac OS X 10.3/10.4/10.5
            + Linux Debian/RedHat/Ubuntu/Suse
* Tested and certified to work with the following application servers and servlet containers:
      o Apache Tomcat, version 5.0 and later
      o BEA WebLogic Server, version 8.1 and later
      o IBM WebSphere Application Server, version 5.1 and later
      o JBoss Application Server, version 3.2.7 and later
      o Jetty, version 5 and later
      o Oracle Application Server, since version 9i
      o Sun Java Systems Application Server, since version 7 

And now the situation is that java1.4 is not supported, so that means that WLS8.1 is not supported. Without that fix, servlet 2.3 is not supported.
And for the conclusion, 5.2.14 doesn’t support any of these: java1.4, servlet 2.3 and WLS8.1.

So I would say that at least since 5.2.14 those are not supported.
Could you tell me in which version those are supported, so I could download that and try this framework in our real development enviroment?

My task is to determine, if IT Mill could be our RIA solution in our legasy system.

Hi,

I think the usage of UUID has slipped into 5.2 by mistake, it should be easy enough to remove.
Apparently the 5.2 build is “broken” at the moment - build should not be possible if “wrong” API is used. I’ll look into this issue!

So the current recommendation is to wait for the next 5.2 - hopefully available today or tomorrow.

As for 5.3, we asked around, and nobody required using java 1.4 at the time, so we decided to go with 1.5 (there are several reasons why the upgrade was wanted). Also note that 1.4 has reached EOSL, so if at all possible, I’d recommend an upgrade: “On October 30, 2008 J2SE 1.4.2 reached the end of its service life (EOSL).”

Best Regards,
Marc

I fixed two servlet 2.3 -issues and one java 1.4 issue.

Our build process has been ‘broken’ at some point, so these incompatibilities slipped trough when stuff was merged from trunk.
Our build has been fixed, so that these should be caught in the future.

Sorry about the mixup!

Best Regards,
Marc

Below is a build made with a genuine JDK 1.4. The build includes the new fix by Marc for the UUID and other 1.4 incompatibility problems:


http://www.itmill.com/download/itmill-toolkit/testing/5.2.15/rc2/

Please test and tell if this works for you.

I tried very shortly that new 5.2.15 rc2 -jar and it seems to work fine.
Thanks!