当存在名称空间冲突时,我如何告诉编译器/ JVM在JBoss Web应用程序中查找某个类



我正在使用JBoss 5.0构建一个Web应用程序,该应用程序连接到我部署应用程序的同一服务器上的JMS队列和主题。我遇到了一个问题,我得到以下错误。

ConnectionFactory tfact = (ConnectionFactory) cntxt.lookup(p.getProperty("topicFactory"));
 ERROR [STDERR] java.lang.ClassCastException: org.hornetq.jms.client.HornetQQueueConnectionFactory cannot be cast to javax.jms.ConnectionFactory
  ERROR [STDERR]    at com.delegation.AgentDelegator.<init>(AgentDelegator.java:48)
  ERROR [STDERR]    at com.ui.properties.OnStartupServlet.init(OnStartupServlet.java:50)
  ERROR [STDERR]    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
  ERROR [STDERR]    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
  ERROR [STDERR]    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
  ERROR [STDERR]    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4417)
  ERROR [STDERR]    at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:313)
  ERROR [STDERR]    at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:145)
  ERROR [STDERR]    at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
  ERROR [STDERR]    at org.jboss.web.deployers.WebModule.startModule(WebModule.java:122)
  ERROR [STDERR]    at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
  ERROR [STDERR]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  ERROR [STDERR]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  ERROR [STDERR]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  ERROR [STDERR]    at java.lang.reflect.Method.invoke(Method.java:597)
  ERROR [STDERR]    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
  ERROR [STDERR]    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
  ERROR [STDERR]    at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
  ERROR [STDERR]    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  ERROR [STDERR]    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
  ERROR [STDERR]    at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
  ERROR [STDERR]    at com.sun.proxy.$Proxy38.start(Unknown Source)
  ERROR [STDERR]    at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
  ERROR [STDERR]    at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
  ERROR [STDERR]    at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
  ERROR [STDERR]    at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
  ERROR [STDERR]    at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:297)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556)
  ERROR [STDERR]    at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
  ERROR [STDERR]    at org.jboss.system.ServiceController.start(ServiceController.java:460)
  ERROR [STDERR]    at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
  ERROR [STDERR]    at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
  ERROR [STDERR]    at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
  ERROR [STDERR]    at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
  ERROR [STDERR]    at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1454)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1172)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1193)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1113)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556)
  ERROR [STDERR]    at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:789)
  ERROR [STDERR]    at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:699)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:403)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:778)
  ERROR [STDERR]    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:543)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.repository.AbstractProfileService.registerProfile(AbstractProfileService.java:308)
  ERROR [STDERR]    at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:256)
  ERROR [STDERR]    at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
  ERROR [STDERR]    at org.jboss.Main.boot(Main.java:229)
  ERROR [STDERR]    at org.jboss.Main$1.call(Main.java:561)
  ERROR [STDERR]    at org.jboss.Main$1.call(Main.java:557)
  ERROR [STDERR]    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
  ERROR [STDERR]    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
  ERROR [STDERR]    at java.lang.Thread.run(Thread.java:662)

我在不同的机器上运行相同的代码,它工作得很好....我注意到我正在导入的JBoss库中有两个jar文件具有org.hornetq.jms.client.HornetQQueueConnectionFactory。一个叫hornetq-jms.jar,另一个叫hornetq-jms-client.jar。我的假设是,在一台机器上,我使用来自一个罐子的类,在另一台机器上,我使用另一个罐子。我已经被告知,它将进入哪个jar取决于我的类路径中的顺序。如果是这种情况,我的问题是:我如何改变战争文件的类路径?如果没有,我的问题是:1)。我如何知道我正在使用的是哪一个?2)我如何改变我使用的?

提前感谢!

您是否正确配置了连接工厂?

根据https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/5/pdf/HornetQ_User_Guide/JBoss_Enterprise_Application_Platform-5-HornetQ_User_Guide-en-US.pdf,您必须使用signature=generic配置连接工厂以检索javax.jms.ConnectionFactory:

<connection-factory name="ConnectionFactory" signature="generic">

另一个问题是p.getProperty("topicFactory")指向什么。价值是否来自非应用程序一部分的外部资源?

最新更新