2016-05-26 3 views
1

Я пытаюсь перенести приложение, которое использует шов 2.1.2, от JBoss 5.2 до JBoss 6.4 EAP. Я добавил все зависимые от шва библиотеки в качестве зависимостей maven, и теперь у меня есть развертывание приложения без каких-либо ошибок, и шов-контекст, кажется, успешно создан (и некоторые из потоков работают как ожидалось).IllegalArgumentException при впрыскивании компонента шва

Я наткнулся на проблему, и я надеюсь, что кто-то может помочь с советом.

Мой EAR имеет следующую структуру:

myapp.ear 
| 
|--- warpck.war 
| 
|--- ejb.jar 
| 
|--- client1.jar 
| 
|--- client2.jar 
| 
|--- commons.jar 
| 
|--- loggers.jar 

В client1.jar У меня есть следующие Java Bean определены:

@Name(CustomClient.NAME) 
@AutoCreate 
public class CustomClientImpl implements CustomClient { 
... 
} 

CustomClient интерфейс выглядит следующим образом:

public interface CustomClient extends GeneratedSoapClients { 

    String NAME = "customClient"; 

}  

Во время развертывания у меня есть следующий журнал:

09:14:44,574 INFO [org.jboss.seam.Component] (ServerService Thread Pool -- 81) Component: customClient, scope: EVENT, type: JAVA_BEAN, class: myapp.client.impl.CustomClientImpl 

... так что я предполагаю, что компонент зарегистрирован правильно в контексте шва.

Проблема заключается в том, что я пытаюсь внедрить этот компонент в один из классов из пакета ejb.jar. Я получаю следующее сообщение об ошибке:

09:14:49,319 ERROR [org.jboss.as.ejb3.invocation] (http-/127.0.0.1:8080-1) JBAS014134: EJB Invocation failed on component CustomAdapterWs for method public myapp.webservice.v5.CustomResponse myapp.webservice.impl.CustomAdapterWs.customInformation(myapp.webservice.v5.CustomInformation): javax.ejb.EJBException: java.lang.IllegalArgumentException: could not set field value: CustomAdapterController.customClient 

Caused by: java.lang.IllegalArgumentException: could not set field value: CustomAdapterController.customClient 
     at org.jboss.seam.Component.setFieldValue(Component.java:1927) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.Component.access$600(Component.java:126) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.Component$BijectedField.set(Component.java:2940) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.Component.injectAttributes(Component.java:1736) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.Component.inject(Component.java:1554) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam-2.1.2.jar:2.1.2] 
     at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) [jboss-seam-2.1.2.jar:2.1.2] 



Caused by: java.lang.IllegalArgumentException: Could not set field value by reflection: CustomAdapterController.customClient on: myapp.controller.CustomAdapterController with value: class myapp.client.impl.CustomClientImpl_$$_javassist_seam_2 



Caused by: java.lang.IllegalArgumentException: Can not set myapp.client.CustomClient field myapp.controller.CustomAdapterController.customClient to myapp.client.impl.CustomClientImpl_$$_javassist_seam_2 

CustomAdapterController:

@Name(CustomAdapterController.NAME) 
@AutoCreate 
public class CustomAdapterController { 

    public static final String NAME = "CustomAdapterController"; 

    @In(value = CustomClient.NAME) 
    private CustomClient customClient; 

Зависимость Javassist, что я использую (он добавляется в EAR ПОМ):

<dependency> 
     <groupId>org.javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.20.0-GA</version> 
    </dependency> 

JBoss-deployment- structure.xml:

<jboss-deployment-structure> 
<ear-subdeployments-isolated>false</ear-subdeployments-isolated> 

<deployment> 
    <exclusions> 
     <module name="org.hibernate" slot="main"/> 
     <module name="org.javassist" slot="main"/> 
    </exclusions> 
    <dependencies> 
     <module name="javax.faces.api" slot="1.2" export="true"/> 
     <module name="com.sun.jsf-impl" slot="1.2" export="true"/> 
     <module name="org.apache.log4j" export="true"/> 
     <module name="org.dom4j" export="true"/> 
     <module name="org.apache.commons.logging" export="true"/> 
     <module name="org.apache.commons.collections" export="true"/> 
    </dependencies> 
</deployment> 

<sub-deployment name="warpck.war"> 
    <exclusions> 
     <module name="javax.faces.api" slot="main"/> 
     <module name="com.sun.jsf-impl" slot="main"/> 
    </exclusions> 
    <dependencies> 
     <module name="javax.faces.api" slot="1.2"/> 
     <module name="com.sun.jsf-impl" slot="1.2"/> 
    </dependencies> 
</sub-deployment> 

<sub-deployment name="ejb.jar"> 
    <dependencies> 
     <module name="client1.jar"/> 
    </dependencies> 
</sub-deployment> 

</jboss-deployment-structure> 

Все компоненты, определенные в ejb.jar, вводятся правильно. Проблема возникает каждый раз, когда я пытаюсь ввести компонент, определенный в пакете differenect. Может ли кто-нибудь сказать мне, что мне здесь не хватает?

ответ

Смежные вопросы