Помогите с ejb 3, weblogic и spring - PullRequest
1 голос
/ 22 мая 2010

Я создал простой тестовый проект 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);
}

Хорошо, мой клиент - это отдельное приложение для весны, конфигурация которого:

<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 tree мой ejb находится под: SimpleEJB3SimpleEJB_jarSumaSimple3_ISumaSimple

Конечно, я добавил wlclient.jar в мой весенний путь к клиенту.

Развертывание прошло отлично, но я думаю, что я что-то упустил в веблогическом случае, но не знаю. Мой весенний клиент выбрасывает это исключение:

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

Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 25 мая 2012

Имя Jndi отличается в OpenEJB и Weblogic, для него нужно использовать другое правильное имя jndi в зависимости от сервера, на котором размещены ejbs.

...