2010-05-21 63 views
1

我创建了一个简单的EJB3测试项目,代码很简单:帮助与EJB 3,WebLogic和春天

@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); 
} 

好吧,我的客户是一个独立的弹簧aplication其配置为:

<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://本地主机:7010

在WebLogic JNDI树我的EJB是下:SimpleEJB3SimpleEJB_jarSumaSimple3_ISumaSimple

当然,我加入wlclient.jar到我的春天客户端的classpath。

部署进行得很完美,但我认为我缺少weblogic案例中的一些东西,但是不知道。我的春天客户抛出这个例外:

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 

任何帮助,将不胜感激。

回答

2

Jndi的名称在OpenEJB和Weblogic中有所不同,必须使用不同的正确的jndi名称作为ejbs托管的服务器。