JBoss 5.0下部署Struts项目

注意这里的版本为jboss-5.1.0.GA版本,如果你部署工程的时候遇到问题(一般都是很纠结很纠结的问题,我是google了好久才成功的),google到的解决方法里貌似4.0以上版本是大概通用的。

1、启动jboss,因为启动信息非常多,而且出问题的话有很多日志,直接运行bin目录里的run.bat的话因为窗口大小有限,所以日志显示不全的问题,所以我运行一般都是在cmd里面用"run.bat > log.txt"(不包括引号)命令的方法启动将输出重定向到log.txt里面方便分析。

话说一般的servlet和jsp的部署方式跟Tomcat的方式无差异,只须将app打包为war文件直接copy到 \jboss-5.1.0.GA\server\default\deploy目录即可,支持热部署。但是部署struts的话可能有点问题,我的工程是采用struts-1.3.10版本,其他版本不清楚,大致通用。

首先一般先复制lib文件,将struts目录里lib文件夹下的jar拷贝到工程的\WEB-INF\lib\目录下,如果你的工程lib目录不在web-inf文件夹下,请拷贝。然后build工程,生成war文件。

然后如果将此时生成的war文件放到deploy目录里,可能会出现以下问题,对应的解决方法也在下面:

1。部署时日志中出现以下问题:

org.jboss.xb.binding.JBossXBRuntimeException: Failed to create a new SAX parser
	at org.jboss.xb.binding.UnmarshallerFactory$UnmarshallerFactoryImpl.newUnmarshaller(UnmarshallerFactory.java:100)
	at org.jboss.web.tomcat.service.deployers.JBossContextConfig.processContextConfig(JBossContextConfig.java:549)
	at org.jboss.web.tomcat.service.deployers.JBossContextConfig.init(JBossContextConfig.java:536)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:279)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.StandardContext.init(StandardContext.java:5436)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4148)
	at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
	at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
	at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
	at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
	at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
可能的解决方法:
 如果生成的war中lib目录下有xerces.jar, xml-apis.jar两个文件,删除之。
2。浏览器中访问应用时出现以下问题(日志中也会记录此问题):

exception

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest"
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

解决方法:

删除war文件中lib目录下的servlet-api.jar。

image

No related posts.

以上关联文章由 Yet Another Related Posts Plugin 提供支持。

Tags:

Leave a Reply