2014-09-13 1 views
1

에서 원격 세션 EJB를 만드는 방법을, 나는 메소드를 호출 할 수없는 것 :클라이언트 <a href="https://netbeans.org/kb/docs/javaee/entappclient.html" rel="nofollow">Netbeans Tutorial on EJB Client applications</a>으로 당

package ejb; 

import javax.ejb.Stateless; 

@Stateless 
public class MySession implements MySessionRemote { 

    public String getResult() { 
     return "This is My Session Bean"; 
    } 
} 

rem OTE 인터페이스 : 인터페이스가 변경되었을 경우 지금

package ejb; 

import javax.ejb.Remote; 

@Remote 
public interface MySessionRemote { 

} 

:

package ejb; 

import javax.ejb.Remote; 

@Remote 
public interface MySessionRemote { 

    public String getResult(); 
} 

지금 @Override 방법 할 수있는 빈 :

-run: 
    [java] java.lang.reflect.InvocationTargetException 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [java]  at java.lang.reflect.Method.invoke(Method.java:606) 
    [java]  at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:446) 
    [java]  at org.glassfish.appclient.client.AppClientFacade.main(AppClientFacade.java:166) 
    [java] Caused by: java.lang.NullPointerException 
    [java]  at entappclient.Main.main(Main.java:16) 
    [java]  ... 6 more 
    [java] Java Result: 1 

run: 

BUILD SUCCESSFUL 
Total time: 18 seconds 
[email protected]:~/NetBeansProjects/EntAppClient$ 
: 그러나

package ejb; 

import javax.ejb.Stateless; 

@Stateless 
public class MySession implements MySessionRemote { 

    @Override 
    public String getResult() { 
     return "This is My Session Bean"; 
    } 
} 

가하는 NPE있다

메소드를 올바르게 호출 할 수 있습니까? EJB가 인스턴스화되지 않았습니까?

답변

0

처음부터 시작했습니다. 내가 생각할 수있는 유일한 차이점은 EJB 애플리케이션을 만드는 대신 bean을위한 EJB 모듈을 만들었다는 것이다. 그렇지 않으면, 나는 그것이 같다고 생각합니다.

구조 :

[email protected]:~/NetBeansProjects$ 
[email protected]:~/NetBeansProjects$ tree HelloLibrary/ 
HelloLibrary/ 
├── build.xml 
├── nbproject 
│   ├── build-impl.xml 
│   ├── genfiles.properties 
│   ├── private 
│   │   └── private.properties 
│   ├── project.properties 
│   └── project.xml 
└── src 
    └── hello 
     └── HelloBeanRemote.java 

4 directories, 7 files 
[email protected]:~/NetBeansProjects$ 
[email protected]:~/NetBeansProjects$ tree HelloEJB/ 
HelloEJB/ 
├── build.xml 
├── nbproject 
│   ├── ant-deploy.xml 
│   ├── build-impl.xml 
│   ├── genfiles.properties 
│   ├── private 
│   │   └── private.properties 
│   ├── project.properties 
│   └── project.xml 
└── src 
    ├── conf 
    │   └── MANIFEST.MF 
    └── java 
     └── hello 
      └── HelloBean.java 

6 directories, 9 files 
[email protected]:~/NetBeansProjects$ 
[email protected]:~/NetBeansProjects$ tree HelloClient/ 
HelloClient/ 
├── build.xml 
├── nbproject 
│   ├── ant-deploy.xml 
│   ├── build-impl.xml 
│   ├── genfiles.properties 
│   ├── private 
│   │   └── private.properties 
│   ├── project.properties 
│   └── project.xml 
├── src 
│   ├── conf 
│   │   ├── application-client.xml 
│   │   └── MANIFEST.MF 
│   └── java 
│    └── helloclient 
│     └── Main.java 
└── test 

7 directories, 10 files 
[email protected]:~/NetBeansProjects$ 
[email protected]:~/NetBeansProjects$ 

클라이언트 코드 :

package helloclient; 

import hello.HelloBeanRemote; 
import javax.ejb.EJB; 

public class Main { 
    @EJB 
    private static HelloBeanRemote helloBean; 

    public static void main(String... args) { 
     System.out.println(helloBean.Hi()); 
    } 

} 

콩 :

package hello; 

import javax.ejb.Stateless; 

@Stateless 
public class HelloBean implements HelloBeanRemote { 

    @Override 
    public String Hi() { 
     return "hello world"; 
    } 

    @Override 
    public String Bye() { 
     return "goodbye"; 
    } 

} 

원격 인터페이스 :

package hello; 

import javax.ejb.Remote; 

@Remote 
public interface HelloBeanRemote { 
    public String Hi(); 
    public String Bye(); 
} 
관련 문제