2017-01-03 145 views
0

我試圖通過JNDI從Wildfly 10遠程調用JBoss 7上的EJB3.1應用程序。JBoss Wildfly 10:xnio在JBoss 7上調用EJB3.1時的ClassCastException

從一個獨立的Java客戶端執行的代碼工作得很好,部署在Wildfly,我收到一個ClassCastException:

java.lang.ClassCastException: org.xnio.SingleOption cannot be cast to org.xnio.Option 

下面是屬性我使用:

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=true 
remote.connectionprovider.create.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 
remote.connections=default 
remote.connection.default.host=some.server 
remote.connection.default.port=4647 
remote.connection.default.connect.options.org.xnio.Options.SSL_ENABLED=true 
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 
remote.clusters=ejbremote.cluster.ejb.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 
remote.cluster.ejb.connect.options.org.xnio.Options.SSL_ENABLED=true 
remote.connection.default.username=user 
remote.connection.default.password=password 
org.jboss.ejb.client.scoped.context=true 
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming 

項目有jboss-as-ejb-client-bom依賴項:

<dependency> 
    <groupId>org.jboss.as</groupId> 
    <artifactId>jboss-as-ejb-client-bom</artifactId> 
    <version>7.2.0.Final</version> 
    <type>pom</type> 
</dependency> 

Lookup looks s標準:

Context ctx = new InitialContext(properties); 
Service service = (Service) ctx.lookup(Service.JNDI_PATH); 

任何想法?

+0

會發生什麼,如果你完全刪除了'的jboss-AS-EJB-客戶bom'依賴? –

+0

標準的「沒有EJBReceiver可用的錯誤信息」:/ – Kaessrin

+0

你在這裏做的與文檔描述的內容看起來不一樣[從遠程服務器實例的EJB調用](https://docs.jboss.org/author/display/WFLY10/EJB + invocations + from + a + remote + server + instance) –

回答

0

檢查如何打包應用程序,我想你會在部署的歸檔中包含org.xnio庫。 在這種情況下,它將由導致此錯誤的不同類加載器加載。

0

包含以下內容添加jboss的部署,structure.xml到你的戰爭的頂層:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
    <dependencies> 
     <module name="org.jboss.xnio"></module> 
    </dependencies> 
    </deployment> 
</jboss-deployment-structure> 
+0

感謝您的回覆。 xnio依賴關係是jboss-as-ejb-client-bom的一部分。我檢查了這些版本,並且野蠅使用了xnio的3.4.0.Final,ejb客戶端bom在3.0.7.Final中使用它們。我現在嘗試了以下幾件事:1)像我建議的那樣,將jboss-deployment-structure.xml添加到我的war文件的WEB-INF中。沒有效果。閱讀關於部署結構的一些內容,2)嘗試將該模塊作爲排除模塊添加到部署結構中(我猜野蠻人使用的是本地版本的xnio而不是打包的版本?),但是也沒有工作。 – Kaessrin

+0

3)我還做了什麼:完全從依賴關係中排除xnio:進行服務調用時,獲取經典的「No EJB Receiver available」錯誤消息。 4)排除了xnio,而是在相同版本中明確添加了wildfly使用:同樣,ClassCastException。 – Kaessrin

+0

我想你使用AS7。 在這種情況下,您必須將依賴項設置爲「org.xno模塊」。 請參見[AS7中的類加載](https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7) –