我创建了一个简单的 EJB3 测试项目,代码很简单:
@Stateless
@Remote( { ISumaSimple.class })
public class SumaSimpleBean implements ISumaSimple {
/**
* Default constructor.
*/
public SumaSimpleBean() {
// TODO Auto-generated constructor stub
}
@Override
public int sumar(int a, int b) {
// TODO Auto-generated method stub
return a + b;
}
}
public interface ISumaSimple {
public int sumar(int a, int b);
}
好的,我的客户端是一个独立的 spring 应用程序,其配置是:
<bean id="sumaSimpleServicio"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">
org.apache.openejb.client.RemoteInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
ejbd://localhost:4201
</prop>
</props>
</property>
<property name="jndiName" value="SumaSimpleBeanRemote" />
</bean>
<bean id="clienteService" class="qtx.cliente.simple.ClienteService">
<property name="sumaSimpleServicio" ref="sumaSimpleServicio"></property>
</bean>
一切顺利,但后来我尝试使用 weblogic 10.3 进行部署,只需更改这些值:
weblogic.jndi.WLInitialContextFactory
t3://localhost:7010
在 weblogic jndi 树中,我的 ejb 位于:SimpleEJB3SimpleEJB_jarSumaSimple3_ISumaSimple
当然,我将 wlclient.jar 添加到我的 spring 客户端类路径中。
部署进行得很顺利,但我认为我在 weblogic 案例中遗漏了一些东西,但不知道。我的 spring 客户抛出了这个异常:
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [qtx.ejb.simple._SumaSimple3_gwze0z_ISumaSimpleIntf_Stub] to required type [qtx.servicio.simple.ISumaSimple] for property 'sumaSimpleServicio'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [qtx.ejb.simple._SumaSimple3_gwze0z_ISumaSimpleIntf_Stub] to required type [qtx.servicio.simple.ISumaSimple] for property 'sumaSimpleServicio': no matching editors or conversion strategy found
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:391)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1249)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
... 14 more
Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [qtx.ejb.simple._SumaSimple3_gwze0z_ISumaSimpleIntf_Stub] to required type [qtx.servicio.simple.ISumaSimple] for property 'sumaSimpleServicio': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:219)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:386)
... 18 more
任何帮助,将不胜感激。