1

Tomcat 7 (OpenEJB に付属) を Jersey 1.9 で動作させようとしています。私は、Jersey RestFUL サービスを Tomcat 6 で動作させました。しかし、war ファイルを Tomcat 7(OpenEJB) にデプロイするとすぐに、次のエラーが発生します。

Eclipse で新しい動的 Web プロジェクトを作成し、余分なコードを追加せずに次の jar ファイルを WEB-INF/lib フォルダーに追加しましたが、それでも同じエラーが発生しました。Tomcat 7 の OpenEJB は Jersey jar を好まないようです。

  • 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: org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1685で null ) 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) at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:693) at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:588) ... 23以上

原因: sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30) での java.lang.InstantiationException .java:355) で java.lang.Class.newInstance(Class.java:308) で org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1682) で

4

2 に答える 2

2

Apache TomEE Plusを確認してください。これは、JAX-RS が既に統合された Tomcat です。ライブラリを探し出してそれらを統合しようとする部分をスキップして、コードの記述部分に進むことができます。

これは、Tomcat Web adpaterと単純な動的 Web プロジェクトを使用して Eclipseでセットアップする方法に関するビデオです。

EJB を RESTful サービスとして使用することに注意してください。特に JPA が関係している場合は、これを行う人がたくさんいます。Applicationトランザクションを無料で取得する以外に、JAX-RSサブクラスも REST サーブレットをマップする必要もありません。小さな特典ですが、いいですね。

同様に、同じクラスを@Remoteオブジェクトとして公開して RMI 経由で呼び出すことも、JAX-WS として@WebServiceHTTP/SOAP 経由で呼び出すことも、単にアノテーションを付けて@LocalBeanHTTP オーバーヘッドなしで同じオブジェクトを内部で使用することもできます。柔軟性があってよかった。

于 2012-06-05T22:52:33.087 に答える
0

このスタック トレースは、ResourceConfig に引数のないデフォルト コンストラクタがあるかどうか疑問に思います。これは、OpenEJB デプロイメントが期待しているのに見つからない場合に表示されます。

REST は Web サービス用の HTTP API であるのに、なぜ OpenEJB で使用するのでしょうか? 私は、この 2 つが相互に排他的であると推測します。セッション EJB または REST サービスを使用してサービスを作成しますが、両方を使用することはありません。

于 2012-06-03T16:18:47.757 に答える