2013-05-16 3 views
1

작동하지 않습니다와 나는 다음과 같은 오류를EJB 주입 내가 내 응용 프로그램 클라이언트에 무 <code>EJB</code>를 주입 시도

SEVERE 수 : EJB 모듈을로드 할 수 없습니다 : 응용 프로그램을 준비하는 동안 예외. DeploymentContext는 EJB를 포함하지 않습니다. C : \ glassfish3 \ glassfish \ domains \ domain1 \ applications \ EJB에 대한 올바른 패키징을 확인하려면 아카이브를 확인하십시오.

EJB 구성 요소 주석을 사용하여 EJB를 정의하고 ejb 또는 웹 배포 설명자를 사용하는 경우 배포 설명자가 Java EE 5 이상의 스키마를 참조하고 metadata-complete 속성 true로 설정되지 않으므로

을 예상대로 구성 요소의 주석을 처리 할 수있는 내 클라이언트가 이렇게 정의 :

@EJB 
private static Sless sless; 
public static void main(String[] args) { 
    System.out.println("Sless says: " + sless.hello()); 
} 

클래스 Sless 이렇게 정의 내 인터페이스 :

@Remote 
public interface Sless { 
    public String hello(); 
} 

는 또한 문제가 극명하게 될 것이다 어디에서 오는에 관한 Sless

@Stateless 
public class SlessBean implements Sless{ 
    @Override 
    public String hello() { 
     return "hello, world!\n"; 
    }  
} 

어떤 도움을 구현하는 클래스가 있습니다.

+0

에서 글래스 피시에 EJB에 연결이 따릅니다. EJB는 GlassFish 3 및 JBoss 7과 같은 Java EE 호환 서버에서 실행되는 엔터프라이즈 응용 프로그램에만 삽입 할 수 있습니다. EJB를 웹 애플리케이션의 서블릿에 삽입하십시오. –

+0

glassfish에서 실행되는 엔터프라이즈 응용 프로그램 (클라이언트)의 응용 프로그램 3.1.2.2. – Ayodeji

+0

클라이언트가 엔터프라이즈 응용 프로그램으로 실행하지 않습니다. –

답변

4

1)Standalone clients 또는 non-managed POJOs (컨테이너에 의해 관리되지 않는 POJO)은 주석 삽입을 지원하지 않습니다. 따라서 @EJB은 작동하지 않습니다.

2) 당신은 당신의 독립형 클라이언트에서 수동JNDI look up을해야 할 것입니다.

무엇이 필요합니까?

1)하신 EJBRemote 인터페이스를 확장. Local 인터페이스는 EJB 프로그램 간 또는 원격 통화를 노출하지 않기 때문에.

2) 종속성 jar 파일이 독립 실행 형 클라이언트에 있습니다. 즉 :ORB Jar

3) 당신은 당신의 서버에 RMI/IIOP 포트를 알아야합니다.

4) 또한 Standalone clientServer 사용하는 다른 JDK/JRE 구현하면 알아서해야합니다.예 : SUN JDK을 사용하고 IBM JDK을 사용하여 1을 입력하십시오.

당신은 콘솔 응용 프로그램을 실행하는 Standalone client >>https://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

+0

IMO RMI 호출을 수행하는 대신 웹 서비스를 사용하는 EJB 메소드를 사용하는 것이 더 좋을 지 모르지만 OP 디자인에 따라 달라집니다. –

+0

나는이 블로그를 이미지나 갔다. 그러나 아무런 변화가 없었다. – Ayodeji

+0

@LuiggiMendoza, hmmmm, 그는 EJB를 웹 서비스로 노출해야 할 것이다. –