I've created a simple EJB3 test project, the code is simple:
@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);
}
Ok, my client is a stand alone spring aplication which configuration is:
<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>
All worked smoothly, but then I tried deploying using weblogic 10.3, just changing these values:
weblogic.jndi.WLInitialContextFactory
t3://localhost:7010
In weblogic jndi tree my ejb is under: SimpleEJB3SimpleEJB_jarSumaSimple3_ISumaSimple
Of course I added wlclient.jar to my spring client classpath.
The deployment went perfectly, but I think I am missing something in weblogic case, but dunno. My spring client is throwing this exception:
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.sprin开发者_运维技巧gframework.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
Any help would be appreciated.
Jndi name differs in OpenEJB and Weblogic , have to use different correct jndi name as per server on which ejbs are hosted.
精彩评论