2

「同一の」CentOS6.2サーバー(Javaバージョン、OSバージョン、JBoss AS7 7.1、アプリのwarファイルのバージョン)が多数あり、javax.xml.ws.Serviceの作成時にほとんどのサーバーが失敗します。それらの1つはまだ機能しており、同じJBoss AS7およびwarファイルが開発者のマシン(Mac)でローカルに機能します。サービスが存在し、そのwsdlロケーションURLとサービス名は、機能しているボックスと機能していないボックスで同じです。

すべてのJBossライブラリ、スクリプト、設定、および動作中のマシンと動作していないマシン間の戦争を含む、JBossAS7ディレクトリ全体を比較しました。私が見る唯一の違いは、マシン自体のIPアドレスに関連しています。

数行を省略して表示されているスタックトレースの原因は次のとおりです。

...a lot of stuff omitted...
Caused by: java.lang.NoClassDefFoundError: org/jboss/xb/binding/ObjectModelFactory
    at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegateImpl.java:137) [jbossws-native-core-3.1.1.GA.jar:3.1.1.GA]
    at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63) [jbossws-native-core-3.1.1.GA.jar:3.1.1.GA]
    at javax.xml.ws.Service.<init>(Service.java:57) [jboss-jaxws-api_2.2_spec-2.0.0.Final.jar:2.0.0.Final]
    at schemas.dynamics.microsoft.nav.system.SystemService.<init>(SystemService.java:41) [navisionws-1001.0-SNAPSHOT.jar:]
    ...our code omitted...
    ... 79 more
Caused by: java.lang.ClassNotFoundException: org.jboss.xb.binding.ObjectModelFactory from [Module "deployment.arinweb_public-1001.0-SNAPSHOT.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 86 more

私たちは次のようなたくさんのことを試しました:

  1. jbossディレクトリ全体を非稼働中のマシンから稼働中のマシンに移動します。
  2. 1台のマシンで動作していたjbossが非動作のマシンで動作しなくなった#1の反対を実行します。
  3. 2台のマシンのすべての環境変数を比較し、それらは一致しています。

問題が何であるかを理解するために次に何を試すべきかについての提案が欲しいです。それか解決策のどちらかが素晴らしいでしょう。

編集-JBossがデプロイメントを開始している間のクラスローディングの問題:

JBossが各アプリのデプロイを開始するときに、クラスローディングの問題が発生します。動作中のマシンと動作していないマシンの間でこれらの警告を比較しましたが、同じです。次に例を示します(両方のサーバーに最初の警告タイプが37個、2番目のタイプが55個あります)。

18:20:04,352 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015893: Encountered invalid class name 'implementingClassName=org.jboss.shrinkwrap.impl.base.ConfigurableArchiveImpl' for service type 'org.jboss.shrinkwrap.spi.Configurable'
16:34:16,370 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-40) Class Path entry shrinkwrap-resolver-impl-maven-1.0.0-beta-6.jar in "/content/snipped_war_name.war/WEB-INF/lib/snipped_jar_name.jar"  does not point to a valid jar for a Class-Path reference.
4

1 に答える 1

3

提案をありがとうございました。多くのデバッグの後、問題を発見しました。誰かが同じ問題を抱えている可能性が 100 万分の 1 になるように、詳細をここに投稿します。

私たちが戦争でパッケージ化したこれらの瓶が犯人でした:

jbossws-native-core-3.1.1.GA.jar 
jbossws-native-jaxws-3.1.1.GA.jar 
jbossws-native-saaj-3.1.1.GA.jar
jbossws-native-jaxrpc-3.1.1.GA.jar 
jbossws-native-jaxws-ext-3.1.1.GA.jar

JBoss AS 7 は、パッケージ化したバージョンよりも新しい独自のバージョンをパッケージ化します。これらの jar ファイルを戦争から削除してサーバーをバウンスすると、問題は解決したようです。

これらの依存関係を取り除くための長期的な解決策は、JBoss Web サービスを 3.1.1.GA から CXF ベースの 4.0.1.GA にアップグレードすることでした。これには多くのコード変更が必要でしたが、悪い依存関係を取り除くことができました。

于 2012-06-19T13:10:40.230 に答える