2011-09-29 2 views
5

J2EE와 EJB를 배우고 있는데 이상한 문제가 있습니다. 이것은 내 프로젝트 설정입니다 :참조 된 EJB 프로젝트의 클래스가 (참조하는) 웹 프로젝트에 없습니다.

저는 Glassfish 3.1과 Eclipse 3.7을 사용하고 있습니다.

  1. 는 EJB 3.0을 준수 프로젝트, myEjbProject
  2. 동적 웹 프로젝트, myWebProject

내가 서블릿 myServletPackage.myServletmyEjbProject에서 EJB 세션 빈 mySessionBeanPackage.mySessionBean를 주입 해요 : 나는 이클립스에서 두 개의 프로젝트가 myWebProject에 있고 (서블릿에서) 세션 빈에 정의 된 간단한 메소드를 호출한다.

myWebProjectmyEjbProject에 대한 참조를 제공했습니다 (속성 -> 프로젝트 참조 대화 상자 사용). 그러나 어떤 이유로 서버가 세션 빈을 찾을 수 없습니다. 정확한 오류는 다음과 같습니다.

심각도 : 클래스 [LmySessionBeanPackage/mySessionBean]을 (를) 찾을 수 없습니다. 오류, [클래스 myServletPackage.myServlet]을 EJB 프로젝트와 웹 프로젝트가 서버에 게시 된 나는 빈에 대해 생성 된 클래스 파일이 있음을 재확인 한 모두 것을

주를로드하는 동안 사실, 서버에 존재합니다 (그래서 나는 서버가 그들을 찾을 수없는 이유를 생각할 수 없습니다).

누구든지 내가 뭘 잘못하고 있다고 말할 수 있습니까? myWebProject의> 라이브러리 목록 -

는 또한 명시 적으로 자바 빌드 경로에 myEjbProject의 클래스 폴더를 추가
  • 을 시도했습니다. 이것은 프로젝트 레퍼런스에 추가 된 것입니다 (프로젝트 레퍼런스를 추가하는 것이 처음에는 충분하다고 생각합니다). 어쨌든 차이는 없습니다 (이전과 같은 오류 메시지).

  • 내보내기 -> EJB Jar 파일 옵션을 사용하여 myEjbProject에서 JAR 파일을 만듭니다 (현재 개미 스크립트를 작성하고 싶지 않습니다). 그런 다음이 JAR을 Java 빌드 경로 -> 라이브러리 섹션 myWebProject에 넣습니다. 이 방법은 문제를 해결하지 못합니다 (이전과 같은 오류 메시지).

  • 세션 빈 더 인터페이스

  • 에게

    • 로컬 인터페이스
    • 원격 인터페이스

    이없는 것으로 수정하고 이에 따라 주입 수정. 예 :단지 로컬 인터페이스와 콩, 나는 사용 :

    @EJB mySessionBeanPackage.mySessionBeanLocal myBean

    이러한 접근 방식은 문제 중 하나 (같은 오류 메시지가 이전을) 해결되지 않았다.

  • 을 모두 삭제하고 myWebProjectmyServletPackage.mySessionBean (서블릿과 동일한 패키지)으로 세션 빈을 추가하십시오. 이 경우, 나는 모두 myEjbProject 멀리 일을하고 mySessionBeanPackage.mySessionBeanmyWebProject (새 패키지)에 세션 빈을 추가

    @EJB mySessionBeanPackage.mySessionBean myBean

  • 를 사용하여 서블릿에 성공적으로 세션 빈을 주입 할 수 있습니다. 이 경우에도, 나는 이클립스 패키지 실제 EAR에서 살펴 보는 것이 좋습니다

    @EJB mySessionBeanPackage.mySessionBean myBean

답변

12

를 사용하여 서블릿에 성공적으로 세션 빈을 주입 할 수 있고 서버에 배포 . EAR 프로젝트를 내 보내어 (EAR 프로젝트 -> 내보내기 -> Java EE -> EAR 파일을 마우스 오른쪽 버튼으로 클릭)

누락 된 단계는 EJB 프로젝트를 WEB 프로젝트의 MANIFEST 파일에 추가하는 것입니다 . 그러나 몇 가지 단계를 빠뜨린 경우 다음을 확인하십시오.

  1. EJB 및 WEB 프로젝트는 EAR 프로젝트의 모듈입니다. EAR 프로젝트 -> 특성 -> 배치 어셈블리 -> 추가 -> 프로젝트 -> EJB 및 WEB 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. EAR 프로젝트를 내보내는 경우 EJB와 WEB 프로젝트가 EAR 패키지로 제공됩니다.
  2. EJB 프로젝트를 WEB 프로젝트의 MANIFEST에 추가하십시오. WEB 프로젝트 -> 특성 -> 배치 어셈블리 -> Manifest entries -> Add -> EJB 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. MANIFEST.MF 파일을 열어 EJB 프로젝트가 포함되어 있는지 확인할 수 있습니다.

EJB 프로젝트를 WEB 프로젝트 빌드 경로에 추가하여 웹 클래스 경로에 포함되도록하는 것이 좋습니다. 웹 프로젝트 -> 등록 정보 -> Java 빌드 경로 -> 프로젝트 -> 추가 -> 마우스 오른쪽 버튼을 클릭하십시오. EJB를 선택하십시오.

+1

2 번 트릭이 나에게 도움이되었습니다. 고마워, 고마워, 고마워! :) 나는 EAR 프로젝트를 아직 만들지 않았다. 왜냐하면 나는 간단하게 시작할 것이라고 생각했기 때문이다. 그리고 마지막 줄, 예, 나는 이미 그것을 가지고있었습니다. 건배. –

+0

우수! # 2 날 더 많은 머리카락을 당겨 저장. 감사! –

관련 문제