문제

나는 잠시 동안 이것을 위해 이것을 위해 고투하고 있습니다.

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)을 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top