Migration from JBoss4

Possible Problems while moving an application from JBoss4 to JBoss5

This document contains a list of all Problems encountered while moving an previously working application from an older JBoss-Version to JBoss5.

Users are encouraged to insert all problems they had while migrating to the new JBoss version.

 

EAR wont be deployed, while it worked in JBoss 4.0.x

Possible Reasons:

The ejb-jar-Attributes are more seriously validated against the dtd.

 

Solutions:

Validate or replace the current header of the ejb-jar.xml:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar
  PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
  "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>

 

Persistence.xml fails to deploy, while it worked in JBoss 4.2.x

Possible Reasons:

JBoss 5 is strict in validating persistence.xml

 

Solutions:

Make sure the header of persistence.xml is :


<persistence
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

 

 

JSP's are not compiled anymore

Possible Reasons:

According to JSP 2.0 specification (chapter 1.7 page 72,73)

This code is illegal:
<mytags:tag value="<%= "hi!" %>" />
Instead the correct sentence would be:
<mytags:tag value='<%= "hi!" %>' />
<mytags:tag value="<%= \"hi!\" %>" />
<mytags:tag value='<%= \"name\" %>' />

Solutions:

Change all tags to a pattern like <mytags:tag value='<%= "hi!" %>' /> to be compatible with the current spec.

 

Quick-Solution to get it working for now:

Solution for JSPC-Precompilation with ant:
export ANT_OPTS="-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false"

 

JBoss:
in run.conf add the JVM-Parameter
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false"

Application cannot be found under expected context-root

Possible Reasons:

The application.xml in your <ear>/META-INF under path application/module/web/context-root is not used, but the context-root from <app-war.war>/WEB-INF/jboss-web.xml.

Solutions:

Remove context-root from <app-war.war>/WEB-INF/jboss-web.xml, if different until some patch comes out.

 

 

JSP's are reaching the 65k-boundary, while in JBoss 4.0.x they worked

Possible Reasons:

Tomcat encodes all of its variables, making the code very large. Also, but probably not important - lots of useless? comments are added.

Solutions:

Alter jboss-5.0.0.GA/server/default/deployers/jbossweb.deployer/web.xml


In section
<servlet>
      <servlet-name>jsp</servlet-name>
      <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>


add     
  <init-param>
     <param-name>genStrAsCharArray</param-name>
     <param-value>true</param-value>
  </init-param>

 

That helps to keep the page (probably) smaller, but in the end, a better design of your JSP-page will be necessary.

 

 

Warnings for EAR-dependent jars while deploying

In the server.log the following message gets recorded for the EAR containing an ejb.jar with embedded jar-files:

13:31:29,386 WARN  [AbstractDeploymentContext] Unable to register deployment mbean vfszip:/usr/local/jboss-5.0.0.GA/server/default/deploy/<some-ear>/<some-ejb>.jar/<embedded-jar>.jar
javax.management.InstanceAlreadyExistsException: jboss.deployment:id="vfszip:/usr/local/jboss-5.0.0.GA/server/default/deploy/<some-ear>/<some-ejb>.jar/<embedded-jar>.jar",type=SubDeployment already registered.
         at org.jboss.mx.server.registry.BasicMBeanRegistry.add(BasicMBeanRegistry.java:767)
         at org.jboss.mx.server.registry.BasicMBeanRegistry.registerMBean(BasicMBeanRegistry.java:236)
         at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source)

Possible Reasons:

Unknown

Solutions:

Unknown

 

 

SAX-Exceptions, XSLT-Errors, other related XML problems

 

Possible Reasons:

WEB-INF/lib containing xalan.jar, xercesImpl.jar, serializer.jar, xml-apis.jar

 

Solutions:

Delete the libraries from WEB-INF/lib, the JBoss-libs are used. That worked in JBoss4.x.x nevertheless, even when the same jars where available in jboss/lib/endorsed, now it doesnt anymore, why?