Во-первых, проблема в том, что я вызываю 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