2010-05-21 7 views
1

J'ai créé un projet simple test EJB3, le code est simple:Aide avec EJB3, Weblogic et au printemps

@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, mon client est un aplication de ressort autonome qui configuration est:

<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> 

Tout a fonctionné sans problème, mais j'ai essayé de déployer à l'aide weblogic 10.3, juste changer ces valeurs:

weblogic.jndi.WLInitialContextFactory

t3: // localhost: 7010

dans l'arbre weblogic JNDI mon ejb est sous: SimpleEJB3SimpleEJB_jarSumaSimple3_ISumaSimple

Bien sûr, j'ajouté wlclient.jar à mon classpath client de printemps.

Le déploiement s'est parfaitement déroulé, mais je pense qu'il me manque quelque chose dans le cas de weblogic, mais pas du tout. Mon client de printemps jette cette 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.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 

Toute aide serait appréciée.

Répondre

2

Le nom Jndi diffère dans OpenEJB et Weblogic, il faut utiliser différents noms jndi corrects selon le serveur sur lequel les ejbs sont hébergés.