2012-04-26 2 views
1

Во-первых, проблема в том, что я вызываю ejb из остального сервлета, ejb всегда имеет значение null.Invoke EJB с весны с использованием джерси отдыха

У меня есть веб-сервис для отдыха, разработанный в майке + весной 3.0.5. И EJB 3.1 для служб.

У меня есть пакет войны и банки в ухо так что мое приложение выглядит как (я использую Maven для зависимости):

+ear 
++war 
++jar 

мне было интересно, как я мог бы назвать свои услуги в файле фляги из мои занятия в военном файле. Насколько я помню, это через JNDI, и мне нужно разоблачить ejb apis? Как мне это сделать?

Я уверен, что EJB созданы успешно, потому что я могу видеть журнал на сервере, как это: Переносные имена JNDI для EJB UserServiceBean: [Java: глобальный/демо-CG-ухо-0.0.1-SNAPSHOT /demo-cg-ejbs/UserServiceBean!com.demo.cg.service.user.UserServiceBeanLocal, java: global/demo-cg-ear-0.0.1-SNAPSHOT/demo-cg-ejbs/UserServiceBean] | #]

Но проблема в том, когда я призываю его в джерси остальные сервлета, это всегда нуль:

@Path("/payment") 
@Stateless 
public class PaymentService { 

@Path("/payment") 
@Stateless 
public class PaymentService { 

    @EJB 
    private UserServiceBeanLocal userServiceBean; 

    @GET 
    @Path("/hello") 
    public Response savePayment() { 

     String result = userServiceBean.getName(); 
     return Response.status(200).entity(result).build(); 

     /* return Response.status(200).entity("hello edward").build(); */ 
    } 

} 

Мой applicationContext.xml файл

<context:annotation-config /> 
    <context:component-scan base-package="com.sido" /> 
    <context:property-placeholder location="WEB-INF/build.properties" /> 

    <!-- <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> 
     <property name="alwaysUseJndiLookup" value="true" /> </bean> --> 

    <jee:jndi-lookup id="userServiceBean" 
     jndi-name="java:global/sido-cg-ear-0.0.1-SNAPSHOT/sido-cg-ejbs/UserServiceBean" 
     resource-ref="true" lookup-on-startup="true" 
     expected-type="com.sido.cg.service.user.UserServiceBeanLocal" 
     proxy-interface="com.sido.cg.service.user.UserServiceBeanLocal"></jee:jndi-lookup> 

UserBean класс

@Interceptors(SpringBeanAutowiringInterceptor.class) 
@Stateless 
public class UserServiceBean implements UserServiceBeanLocal { 
    private String name; 

    public UserServiceBean() { 
     name = "edward"; 
    } 

    @PostConstruct 
    private void init() { 
     name = "edward"; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

Спасибо,
czetsuya

ответ