2010-05-21 54 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託管的服務器。