java - EJB 规范违规 : The message driven bean must declare one onMessage() method

标签 java maven jboss

我正在从事一些迁移项目,涉及将相当多的东西从 Ant/CVS/Jboss4/Java5 移动到 Maven/SVN/Jboss7/Java6 - 这变得很糟糕。

第一步,我正在努力将 ant 构建移至 Maven - 它本身涉及很多复杂性。现在我已经构建了ear文件,并将其与ant构建的ear进行了比较,我认为我在maven构建中得到了很好的结果。

现在,首先在 Jboss4 上部署,我遇到了

[ejb.EJBDeployer.verifier] EJB spec violation:
Warning: The message driven bean must declare one onMessage() method.

2011-11-08 15:25:03,079 ERROR (Thread: main) [jboss.deployment.MainDeployer] Could not create deployment: file:/opt/jboss-4.0.3SP1/server/default/tmp/deploy/tmp46514Billing-EAR-1.0.ear-contents/processsubscriptionbean-1.0.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans failed, see above for error messages.
        at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:575)
        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:585)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
        at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
        at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
        at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:80)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
        at $Proxy24.create(Unknown Source)
        at org.jboss.deployment.MainDeployer.create(MainDeployer.java:935)
        at org.jboss.deployment.MainDeployer.create(MainDeployer.java:925)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:789)

我遇到了这个帖子jBoss deployment of message-driven bean spec violation - 所以我认为我在新的 Maven 构建上使用了错误的库,我替换了它并确保它使用相同的 javax.jms 库(这现在指向与原始 ant 构建相同的包含 javax.jms.Message 的 jar) - 事实上,我只是抓取 ant 构建引用的 jar 并将其上传到 Maven 存储库,并从我的 Maven 构建引用它。

但是我还是遇到了上面的问题。原来的 ant-build 可以毫无问题地部署,但目前我在 maven-build Ear 上遇到了这个问题。

关于我可以采取哪些其他步骤来确保不存在不同的类文件问题,有什么建议吗?谢谢!

最佳答案

javax.jms 库是否已打包在您的耳朵中(jboss-j2ee.jar、jboss-client.jar 等)?如果是这样,您不希望这样,因为您想使用应用程序服务器提供的服务。您可以通过更改 pom 中的依赖关系来解决此问题,使其具有 <scope>provided</scope>任何不应该进入你耳朵的东西。

关于java - EJB 规范违规 : The message driven bean must declare one onMessage() method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056856/

相关文章:

Java buffreader 中间关闭

java - 将 RequestBody json 转换为对象 - Spring Boot

java - Apache Spark 无法处理大型 Cassandra 列族

maven - jacoco:report-aggregate 要么得到浅层覆盖,要么根本没有

java - Web 服务依赖于另一个 Web 服务

java - 如何根据外键从引用表中获取值?

java - Maven:将 Shadowd-jar 作为库加载到单独的项目中

java - Cassandra 2.1.3。如何提取CommitLog

java - 迁移到 JBoss 7.1.1 时出现 ClassNotFoundException:sun.net.www.MimeTable

java - Eclipse:初始化端点 java.net.BindException 时出错:权限被拒绝:443