有关JBoss4下ClassLoader的问题,请教各位大侠!!!

leody0731 2012-04-21 08:34:20
我的项目是:
EJB3.0+JBoss4的环境,起动没有问题,并且其他的画面也可以正常运行。
但今天为了做个文件上传下载的功能,但运行上传下载画面时,出现以下错误:

20:18:06,927 INFO [CreateAction] Initialize action of type: toonasofts.conductor.struts.cm.FileDownloadUploadAction
20:18:06,959 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.ClassNotFoundException: No ClassLoaders found for: org.apache.commons.fileupload.FileItemFactory
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at toonasofts.conductor.struts.cm.FileDownloadUploadAction.initDownloadFiles(FileDownloadUploadAction.java:270)
at toonasofts.conductor.struts.cm.FileDownloadUploadAction.execute(FileDownloadUploadAction.java:99)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)

PS.文件上传下载我用的是commons-fileupload-1.2.2.jar。
网上有大侠说:问题的原因是在系统中使用工厂类导致的问题,不能从JBoss的类加载器中动态加载类 。
但没有说具体解决方案,还请那位大侠,能给与指点。先谢谢了!!!


...全文
219 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
嗯。留着帖子。,以后对同样碰到问题的童鞋有帮助啦
leody0731 2012-04-21
  • 打赏
  • 举报
回复
问题解决了!!!
在JSOSS4中JBOSS的WEB加载器默认是false,
所以把JBOSS自带的加载器由默认的false改为true,问题就可以解决了。
方法是:将D:\jboss-eap-4.3\jboss-as\server\production\deploy\jboss-web.deployer\META-INF\jboss-service.xml中的UseJBossWebLoader值改为true即可
解决方法:
jboss所在路径\server\default\deploy\jboss-web.deployer\META-INF\jboss-service.xml中的UseJBossWebLoader中的false改为true。

在此,还是谢谢各位了!以上解决方法,希望能帮到遇到同样问题的同胞们!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧