前几天将一个原来的项目从weblogic上移植到了JBoss上,于是就将移植中出现的问题以及需要完成的工作记录了下来,以供大家参考。
1、上下文(Context)的获得方式不同,下面分别是两者获得上下文的代码:
//weblogic中
Properties propJNDI = new Properties();
propJNDI.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
propJNDI.put(Context.PROVIDER_URL,
"t3://127.0.0.1:7001");
Context context = new InitialContext( propJNDI);
// JBoss中就相当简单了,只需要下面一句代码
Context context = new InitialContext();
2、中文问题一直是令Java程序员头疼的问题,在weblogic中它已经内置了过滤器,帮助解决这个问题,在开发过程中只需要在web.XML简单配置即可使用。而在JBoss并没有提供解决办法,但是我们通过自己编写过滤器同样可以简单的解决这个问题。
// weblogic中的配置文件
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
JBoss中过滤器的使用,可以参考本站另外一篇文章《Filter技术的应用》。
3、在weblogic中对工程目录下资源文件的文件名的大小写不敏感,而在JBoss中对资源文件的文件名的大小是敏感的。这个问题有时是很难发现的,所以在写程序时我们一定要养成良好的习惯,这样在程序移植时才不至于为了一个字母的大小写而翻遍整个工程文件。
4、对于<jsp:include>标签,如果在其中没有包含<jsp:param>标签,我们就可以写成<jsp:include …></jsp:include>和<jsp:include …/>两种形式,这在weblogic中时没有任何错误。但是移植到JBoss中时,就要注意了。对于前者,JBoss就会搜索其中的<jsp:param>标签,结果会因为没有这个标签而出现异常。所以在JBoss中对于这一类型的标签,我们必须使用后一种形式。
5、<%@ page import="java.util.*" %>在jboss下必须在需要的时候引入,在weblogic中可以不引入。
6、页面上的注释问题。由于JSP页面是由Html代码构成,所以我们习惯于使用HTML代码的注释形式:<!-- … -->,这种形式的注释在weblogic中可以顺利执行,但是在JBoss中它只能注释单行的JSP标签,例如<!-- jsp:include …/ -->。但是如果注释多行,例如<jsp:include>中又包含了<jsp:param>标签,就会发生异常:
The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements。
所以在JBoss中页面上的JSP标签最好使用java的标准注释,如:
<%
/*
<jsp:include …>
<jsp:param …/>
</jsp:include>
*/
%>
7、web.xml文件中类似下面的配置,在weblogic中文件的路径必须包含一个“/”,就是要使用绝对路径,而在JBoss中需要使用相对路径路径,最前面不能带有“/”,否则将访问不到页面。
weblogic中:
<welcome-file-list>
<welcome-file>/index.htm</welcome-file>
</welcome-file-list>
JBoss中:
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
8、weblogic中的web.xml中的元素需要按照一定的顺序排列,而在JBoss中并没有这样的要求,因此如果你把JBoss上的web.xml直接copy到weblogic的工程中时,可能会出现警告。当然,这并不影响程序的运行,解决的方法也很简单,只需按照警告信息上给出的属性的顺序修改web.xml文件,即可消除警告。
9、web工程的文件或者文件夹:在weblogic中,web工程可以位于电脑上的任何目录,只需在发布时指定文件的所在位置就可以了。而jBoss中web工程的文件或者文件夹必须位于deploy目录下。对于没有打包的web工程文件夹,在JBoss中文件夹的名字必须要以.war结尾,而在weblogic并不需要,只要按照web工程的标准形式组织,在发布时就会以和一般文件夹不同的形式显示出来。
10、配置数据源。要使程序可以顺利运行这一步是必不可少的。weblogic的数据源比较简单,打开控制台后,在左面的树形菜单上会找到Services—〉JDBC—〉Connection Pools和Services—〉JDBC—〉DataSources,先后在其中配置连接池和数据源即可。在JBoss中,打开%JBOSS_HOME%\docs\examples\jca文件夹,里面是各种数据库相对应的数据源配置文件,将需要的文件copy到deploy目录下,任何修改其中其中的参数即可。需要注意的是:在weblogic中数据源的JNDI就是所配置的名字,而JBoss中并不是配置文件中的那个名称(SourceName),而是java:SourceName,可以在JBoss启动时从控制台看到。所以程序中获得数据源一定要注意。
(出处:http://www.knowsky.com)