1

ORB PortableInterceptorを使用したいので、JBoss6.1で実行されている10年前のEJB2アプリケーションをJNPプロトコルからCORBARMI/IIOPに移行しています。

最初のJBossはorg.jboss.iiop.rmi.RMIIIOPViolationExceptionで文句を言います私は今修正しました。

現在、JBossのWebCLサーブレットは、ホームインターフェイスとリモートインターフェイスのスタブをクライアントに配信できず、何が問題になっているのかわかりません。私の唯一の残りの仮説は、RMICコンパイラがサイレントに失敗するというものです。私が受け取る唯一のエラーメッセージは

2013-01-29 09:33:52,068 ERROR [org.jboss.iiop.WebCL] (pool-2-thread-1) failed finding class my.test.services.orb._Business1SLHome_Stub: org.jboss.util.NestedRuntimeException: - nested throwable: (java.lang.ExceptionInInitializerError)
    at org.jboss.iiop.WebCL.findClass(WebCL.java:124) [:6.1.0.Final]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) [:1.6.0_31]
    at org.jboss.classloading.spi.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:82) [jboss-classloading-spi.jar:6.0.0.CR1]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [:1.6.0_31]
    at org.jboss.web.WebServer.run(WebServer.java:393) [:6.1.0.Final]
    at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33) [:2.0.0.CR7]
    at org.jboss.threads.CleanupExecutor.execute(CleanupExecutor.java:38) [:2.0.0.CR7]
    at org.jboss.threads.CleanupExecutor.execute(CleanupExecutor.java:38) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:801) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45) [:2.0.0.CR7]
    at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:821) [:2.0.0.CR7]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_31]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [:2.0.0.CR7]
Caused by: java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.6.0_31]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [:1.6.0_31]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [:1.6.0_31]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [:1.6.0_31]
    at java.lang.Class.newInstance0(Class.java:355) [:1.6.0_31]
    at java.lang.Class.newInstance(Class.java:308) [:1.6.0_31]
    at org.jboss.iiop.WebCL.findClass(WebCL.java:120) [:6.1.0.Final]
    ... 12 more
Caused by: java.lang.RuntimeException: Error loading class my.test.services.orb.Business1Remote: java.lang.ClassNotFoundException: my.test.services.orb.Business1Remote from BaseClassLoader@3cdf0256{asynch-classloader:0.0.0$MODULE}
    at org.jboss.iiop.rmi.marshal.CDRStream.readerFor(CDRStream.java:208) [:6.1.0.Final]
    at org.jboss.iiop.rmi.marshal.strategy.StubStrategy.<init>(StubStrategy.java:175) [:6.1.0.Final]
    at org.jboss.iiop.rmi.marshal.strategy.StubStrategy.forMethod(StubStrategy.java:115) [:6.1.0.Final]
    at my.test.services.orb._Business1SLHome_Stub.$i2(Unknown Source)
    at my.test.services.orb._Business1SLHome_Stub.<clinit>(Unknown Source)
    ... 19 more

このクラスの読み込みエラーの原因を突き止めて修正するにはどうすればよいですか?

4

2 に答える 2

2

私はこれをやっています:

  1. jbossでリモートデバッグを有効にする
  2. デバッガー(Eclipseデバッガーなど)をJBossインスタンスに接続します
  3. ClassNotFoundExceptionsをキャッチするためのブレークポイントを定義します
  4. コードをアクティブ化する
  5. ブレークポイントに到達したら、使用されているクラスローダーを調べて、ロードされたクラスのリストがどのように見えるかを確認します。これにより、クラスのロードが失敗する理由がわかります。

コンパイラが機能している場合でも、クラスローダーが問題のクラスを認識していない可能性があります。

于 2013-01-29T13:11:41.783 に答える
1

根本的な原因は、指定されたBusiness1Remoteクラスが見つからなかったことです。スタックトレースを参照してください。クライアントにデプロイしましたか?

于 2013-01-29T13:46:58.117 に答える