0

app.war を websphere 7.0 にデプロイすると、. Restful Web サービスが正常に初期化されました。
しかし、 websphere 8.5 にアップグレードした後。Restful Web サービス クラスのデプロイに失敗しました。
以下は、ジャージ用の app.war の pom.xml です。

    <!-- restful web service -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-all</artifactId>
        <version>3.2</version>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.17</version>
        <scope>compile</scope>
    </dependency>

     <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.17</version>
       <scope>compile</scope>
    </dependency>  

     <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.17</version>
       <scope>compile</scope>
    </dependency>  

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.17</version>
        <scope>compile</scope>
    </dependency>

以下は私のweb.xmlです

  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.tag.services.testrsws</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rs/*</url-pattern>
  </servlet-mapping>
</web-app> 

以下は、アプリを起動したときの websphere エラー ログです。

[13-3-1 13:22:44:103 CST] 000003b5 PackagesResou I パッケージ内のルート リソースとプロバイダー クラスをスキャンしています: com.tag.services.testrsws
[13-3-1 13:22:44:123 CST ] 000003b5 サーブレット E com.ibm.ws.webcontainer.servlet.ServletWrapper init Uncaught.init.exception.thrown.by.servlet
[13-3-1 13:22:44:124 CST] 000003b5 webapp E com.ibm.ws .webcontainer.webapp.WebApp commonInitializationFinally SRVE0266E: init サーブレット エラー:{0} javax.servlet.ServletException: SRVE0207E: com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java: 398)
...
...
原因: java.lang.IncompatibleClassChangeError: org.objectweb.asm.ClassVisitor java.lang.ClassLoader.defineClassImpl(Native Method) で java.lang.ClassLoader.defineClass(ClassLoader.java:262) で java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69) で com.ibm.ws.classloader .CompoundClassLoader._defineClass(CompoundClassLoader.java:852) で com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:762) で com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585) でjava.lang.ClassLoader.loadClass(ClassLoader.java:627) の java.lang.J9VMInternals.verifyImpl(ネイティブ メソッド) の java.lang.J9VMInternals.verify(J9VMInternals.java:85) の java.lang.J9VMInternals.verify( J9VMInternals.java:83) の java.lang.J9VMInternals.initialize(J9VMInternals.java:162) の com.sun.jersey.api.core。ScanningResourceConfig.init(ScanningResourceConfig.java:79) com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104) com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:78) ) com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:89) com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696) com.sun.jersey .spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674) com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) com.sun.jersey.spi.container .servlet.ServletContainer.init(ServletContainer.java:374) at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) at javax.servlet.GenericServlet.com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:336) の init(GenericServlet.java:161)

Google で検索した後、webshpere サーバーに既に asm が含まれている可能性があると言う人もいます。そこで、app.war WEB-INF/lib から asm.jar を削除します。しかし、まだエラーがあります。

4

2 に答える 2

1

@Surge のアドバイスを除く。
共有ライブラリを作成して、asm-all.jar jersery.jar をライブラリに配置してみてください。共有ライブラリをアプリケーションに指定します。

于 2013-03-07T05:40:22.637 に答える
1

WEB-INF/lib から asm.jar を削除しないでください。逆に、Websphere インストールによって提供される asm.jar の代わりに、WEB-INF/lib 内の asm.jar を使用するように Websphere 8.5 に指示する必要があります。このリンクをチェックしてください: Configure Web Module Classloaderまず、ローカル クラス ローダーをロードしたクラスを選択する必要があります。

コメントに基づいて編集:

これは Websphere 8.5 PM63479 のバグのようです。8.5: earexpander が java.lang.incompatibleclasschangeerror をスローします。PM63479 をダウンロードして、問題が解決するかどうかを確認してください。

于 2013-03-01T05:31:53.680 に答える