【问题标题】:Tomcat 7 OpenEJB and JerseyTomcat 7 OpenEJB 和 Jersey
【发布时间】:2012-06-03 16:13:06
【问题描述】:

我正在尝试让 Tomcat 7(带有 OpenEJB)与 Jersey 1.9 一起使用。我让我的 Jersey RestFUL 服务与 Tomcat 6 一起使用。但是,一旦我将 war 文件部署到 Tomcat 7(OpenEJB),我就会收到以下错误。

我在 Eclipse 中创建了一个新的动态 Web 项目,并将以下 jars 添加到 WEB-INF/lib 文件夹中,而没有添加任何额外的代码,但我仍然遇到同样的错误。似乎 Tomcat 7 的 OpenEJB 不喜欢 Jersey jars。

  • asm-3.1.jar
  • jersey-core-1.9-ea04.jar
  • jersey-server-1.9-ea04.jar

原因:org.apache.openejb.OpenEJBException:无法实例化应用程序类:com.sun.jersey.api.core.ResourceConfig:null at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1685) 在 org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1482) 在 org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:293) 在 org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:263) 在 org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:693) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:588) ... 23 更多

引起:java.lang.InstantiationException 在 sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.lang.Class.newInstance0(Class.java:355) 在 java.lang.Class.newInstance(Class.java:308) 在 org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1682)

【问题讨论】:

    标签: jersey tomcat7 openejb


    【解决方案1】:

    查看Apache TomEE Plus,它是已集成 JAX-RS 的 Tomcat。您可以跳过寻找库的部分并尝试将它们集成并继续编写代码部分。

    这是一个关于如何在 Eclipse using the Tomcat web adpater 中设置它的视频和一个简单的动态 Web 项目。

    关于将 EJB 用作 RESTful 服务的注意事项,有很多人这样做,尤其是在涉及 JPA 时。除了免费获得事务之外,您还不需要 JAX-RS Application 子类或映射任何 REST servlet。一个小福利,但很好。

    您也可以将相同的类公开为@Remote 对象并通过RMI 调用它,作为JAX-WS @WebService 并通过HTTP/SOAP 调用它,或者只是注释它@LocalBean,您可以使用内部相同的对象,没有 HTTP 开销。很高兴拥有灵活性。

    【讨论】:

      【解决方案2】:

      这个堆栈跟踪让我想知道 ResourceConfig 是否有一个无参数的默认构造函数。如果 OpenEJB 部署预期并没有找到它,您会看到这一点。

      既然 REST 是一种用于 Web 服务的 HTTP API,那么为什么要将它与 OpenEJB 一起使用呢?我猜这两者将是相互排斥的。我会使用会话 EJB 或 REST 服务编写服务,但不能同时使用两者。

      【讨论】:

      • 我正在尝试构建一个 Java ee 6 电子商务网站。我正处于弄清楚要使用哪些技术的阶段。我希望将 RestFUL Web 服务用于服务请求并使用 EJB bean 来处理业务服务事务。所以我想我可能需要 Tomcat 7 (OpenEJB)。这是同时使用两者的好理由吗?
      • 我个人的偏好是传递 EJB 并在 Spring 中使用 Web 服务,但这只是一种选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多