@ejb in JBoss 5.1.0 GA?
-
17-09-2020 - |
문제
나는 잠시 동안 이것을 위해 이것을 위해 고투하고 있습니다.
EJB 3.0을 위해 준비하려고합니다. JBoss 5.1.0 GA를 사용하여 응용 프로그램 서버로 사용하고 있습니다. 로컬 인터페이스와 Session Bean 메소드를 호출하는 간단한 JSP-Servlet 클라이언트가있는 매우 간단한 상태 비 저장 세션 Bean을 시작했습니다. 이 모든 것은 @EJB
주석을 사용하여 Season Bean을 서블릿 클래스에 주입하려고합니다.
public class SampleServlet extends HttpServlet {
@EJB
private PersonLocal person;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("In servlet");
response.getWriter().write("Person Name : "+person.getName());
System.out.println(person.getName());
}
}
.
기본값 구성으로 JBoss 5.1.0ga를 사용하고 있습니다. (나는 또한 모두 구성으로 시도했다)
그러나 Session Bean 주입에 대한 널 참조를 얻는 데 사용되었습니다. 하루 동안 고투 한 후에는 @EJB
파일에 지정된 JNDI의 구성을 사용하여 jndi.properties
주석을 사용하는 UGLY EJB 2.x JNDI Lookup 메소드를 시도했으며 다른 변경 사항없이 작동했습니다!
이제 JBoss 5.1.0 GA가 @EJB
주석을 사용하여 주입을 지원하거나 구체적인 답변을 찾을 수 없었는지 여부는 JBoss 문서에서 찾으려고 노력했습니다. 누군가가 그것이하는지 여부를 알려줄 수 있습니까? 왜냐하면 나는 JNDI 조회에 대한 주석을 정말로 선호 할 것입니다 (나는 누가 누구가 아니라는 것을 의미합니까?). 나는 뭔가를 놓친가 ..
은 아마도 JBoss 포럼에 이것을 넣어야하지만, 나는이 장소에 중독되어 있습니다. -)
해결책
JBOSS 5.x가 Java EE 5 인증이므로 확실히 지원됩니다.
실제로, 나는 챕터를 확인하는 것이 좋습니다.11. Servlet의 EJB 주입 소개 JBoss EJB3 자습서 , 이들은 세부 및 단계별 예제를 설명합니다.
다음 주에 특별한주의를 기울이십시오 :
주사가 일어납니다. 웹 모듈, Web.xml이 사용해야합니다 2.5 버전의 웹 앱 XSD :
.<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
다른 팁
원격 EJB를 사용하여 익숙한 문제가 있었지만 웹 응용 프로그램 버전으로 인한 것이 아니라 오히려 내 클라이언트가 EJB를 찾고 있었는지
여기에 일하는 것이 있습니다 :
//bean
@Stateless(name="xxxxService")
@Remote(xxxxRemote.class)
public class xxxxService implements xxxxRemote {
//interface - note that no annnotation is required
public interface xxxxRemote {
//in the client
@EJB(mappedName="myJndiNameForxxxx") //for a local ejb, you could use 'beanName='
private xxxxRemote xxxx;
.
내 프로젝트 (Maven이 내장)의 경우 클라이언트가 WebApp에 있으며 EJB는 EJB 프로젝트에 있으며이어서 EAR 프로젝트에 싸여 있습니다.JNDI 매핑은 EJB 프로젝트 (프로젝트, src / 주 / 자원 / META-INF)에 삽입 된 jboss.xml에서 발생하며 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<jboss xmlns:xs="http://www.jboss.org/j2ee/schema"
xs:schemaLocation="http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
version="5.0">
<enterprise-beans>
<session>
<ejb-name>xxxxService</ejb-name>
<jndi-name>myJndiNameForxxxx</jndi-name>
</session>
</enterprise-beans>
</jboss>
.
모든 것이 찍은 모든 것이며 이제는 클라이언트에서 EJB에 액세스 할 수 있습니다.이것이 누군가를 돕기를 바랍니다.
여전히 문제가있는 경우 JNDI 항목이 표시되는지 확인하려면 JMX 콘솔을 볼 수 있습니다.'jboss'> 'service= jndiview'> 'list'를보고 'Invoke'버튼을 클릭하십시오.서비스가 올바르게 배포 된 경우 'ProxyFactory'에서 JNDI 이름 (예 : MyJNDINAMEForXXXX에서 MyJNDINAMEForXXXX)을 볼 수 있습니다.