2017-09-28 50 views
0

ための併用を扱うために利用可能なEJB受信機Iは、アプリケーションが3層から構成されている:EJBを含むバックエンド(Wildfly EJBコンテナ上で別々に実行)DB及びフロントエンド EJBクライアント(Tomcatで別途実行)。フロントエンドとバックエンド間の通信はDTO(データ転送オブジェクト)によって行われます。私はのDTOの一つに新しいマップフィールドを追加するまで、すべてが正常に働いていた:java.lang.IllegalStateException:EJBCLIENT000025:呼び出しコンテキスト

public class xxxDTO implements Serializable { 
    private static final long serialVersionUID = 5811694947383586010L; 

    // simple fields like String, Integer, etc. go here 
    private Map<Language, yyyNameDTO> NameDetailsMap; 

    ..... 
} 

できるだけ早く私は、マップフィールドを追加して、クライアントからxxxDTO上のEJBメソッド呼び出しは、次の例外を与えました私は、マップフィールドを削除、またはEJBの受信機が利用可能になり、すべてが正常に動作しますが、マップフィールドがnull以外の値を持っている場合、EJBの受信機が使用できなくなっnullし、そのフィールドを設定し

java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:app, moduleName:app-ejb, distinctName:] combination for invocation context [email protected] 
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:749) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBClientInvocationContext.retryRequest(EJBClientInvocationContext.java:211) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:256) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:265) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:198) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:181) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:144) ~[jboss-ejb-client-2.0.1.Final.jar:2.0.1.Final] 
at com.sun.proxy.$Proxy65.registerTaxpayer(Unknown Source) ~[?:?] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_66] 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_66] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_66] 
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_66] 
at org.springframework.remoting.rmi.RmiClientInterceptorUtils.invokeRemoteMethod(RmiClientInterceptorUtils.java:71) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:98) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invokeInContext(AbstractRemoteSlsbInvokerInterceptor.java:140) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.invoke(AbstractSlsbInvokerInterceptor.java:189) ~[spring-context-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE] 
at com.sun.proxy.$Proxy22.registerTaxpayer(Unknown Source) ~[?:?] 

SerialVersionUID(シリアル化とバージョニングの問題かもしれないと思っています)を変更して解決しようとしましたが、結果はありませんでした。

質問は以下のとおりです。

  • なぜ例外をスローでマップのフィールドの原因?
  • どうすれば解決できますか?

答えて

0

私はただの問題を解決しました。 愚かな間違い:Serializableインターフェイスを実装するのを忘れて、私のyyyNameDTOに新たに追加されたDTOクラスのserialVersionUIDを入れてください。

関連する問題