java – 如何从客户端创建远程会话EJB
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何从客户端创建远程会话EJB,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4537字,纯文字阅读大概需要7分钟。
内容图文
![java – 如何从客户端创建远程会话EJB](/upload/InfoBanner/zyjiaocheng/712/ca70480289b04351996c95f6ec9ef5b2.jpg)
根据Netbeans Tutorial on EJB Client applications,我似乎无法调用该方法:
编译错误:
-do-compile:
[mkdir] Created dir: /home/thufir/NetBeansProjects/EntAppClient/build/empty
[mkdir] Created dir: /home/thufir/NetBeansProjects/EntAppClient/build/generated-sources/ap-source-output
[javac] Compiling 1 source file to /home/thufir/NetBeansProjects/EntAppClient/build/jar
[javac] /home/thufir/NetBeansProjects/EntAppClient/src/java/entappclient/Main.java:16: error: cannot find symbol
[javac] System.err.println("result = " + mySession.getResult());
[javac] ^
[javac] symbol: method getResult()
[javac] location: variable mySession of type MySessionRemote
[javac] 1 error
BUILD FAILED
客户:
package entappclient;
import ejb.MySessionRemote;
import javax.ejb.EJB;
public class Main {
@EJB
private static MySessionRemote mySession;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.err.println("result = " + mySession.getResult());
}
}
EJB:
package ejb;
import javax.ejb.Stateless;
@Stateless
public class MySession implements MySessionRemote {
public String getResult() {
return "This is My Session Bean";
}
}
远程接口:
package ejb;
import javax.ejb.Remote;
@Remote
public interface MySessionRemote {
}
现在,如果界面被修改:
package ejb;
import javax.ejb.Remote;
@Remote
public interface MySessionRemote {
public String getResult();
}
bean现在可以@Override方法:
package ejb;
import javax.ejb.Stateless;
@Stateless
public class MySession implements MySessionRemote {
@Override
public String getResult() {
return "This is My Session Bean";
}
}
但是,有一个NPE:
-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
thufir@dur:~/NetBeansProjects/EntAppClient$
我该如何正确调用该方法? EJB没有实例化?
解决方法:
我从零开始.我能想到的唯一区别是,我只是为bean创建了一个EJB模块,而不是创建EJB应用程序.否则,我认为它是一样的.
结构体:
thufir@dur:~/NetBeansProjects$
thufir@dur:~/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
thufir@dur:~/NetBeansProjects$
thufir@dur:~/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
thufir@dur:~/NetBeansProjects$
thufir@dur:~/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
thufir@dur:~/NetBeansProjects$
thufir@dur:~/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();
}
内容总结
以上是互联网集市为您收集整理的java – 如何从客户端创建远程会话EJB全部内容,希望文章能够帮你解决java – 如何从客户端创建远程会话EJB所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。