热卖商品
新闻详情
使用glassfish开发ejb3的session bean - 黑桃 - ITeye博客
来自 : www.iteye.com/blog/geoconst-42
发布时间:2021-03-24
项目结构如下:
HelloWorldClient类是HelloWorld的ejb3客户端调用类
IHelloWorldRemote是接口(两年没做C++,还是喜欢C++的表示法)
HelloWorldBean是IHelloWorldRemote的实现类
所需的jar包如下:
appserv-deployment-client.jar
appserv-ext.jar
appserv-rt.jar
javaee.jar
这些jar包在glassfish_home/lib目录下均可找到
IHelloWorldRemote代码如下:
HelloWorldBean代码如下:
@Stateless标签表明这个类是一个无状态会话Bean,mappedName最好设置,理由后面解释
@Remote(IHelloWorldRemote.class)表明IHelloWorldRemote接口是一个远程接口,只能以远程方式来访问
至此,一个简单的EJB3会话Bean已完成,打包helloworld.jar
打开glassfish web控制台,部署helloworld.jar至“EJB模块”
HelloWorldBean的客户端调用代码:
当然这里由于glassfish是在本机所以Host设置为localhost,如果非本地,请改为对应IP
glassfish的EJB端口默认为3700,如果安装过程有改动,请改为对应端口
如果顺利的话,控制台将打印出:
Hey, Hello World!
如果客户端和服务器是在同一台机器上,客户端的调用代码可以简化为:
这是因为InitialContext默认会读取jndi.properties文件,而appserv-rt.jar包中提供了一个这样的jndi.properties文件。另外,Host默认是localhost,端口默认是3700。
至此,一个HelloWorld的EJB3无状态会话Bean已完成。
注意:
mappedName就是在InitialContext lookup时使用的名称。
如果我们不设置这个mappedName,那么部署后的EJB名称是什么呢?在jboss中将会是HelloWorldBean/remote,而在glassfish中将使用IHelloWorldRemote接口的全名,即my.ejb3.iface.IHelloWorldRemote(注意是接口的全名)。为了去掉这些不必要的麻烦,建议设置mappedName。
glassfish上开发ejb的一些参考资料:
http://groups.google.com/group/glassfish_china/web/ejb
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#SessionBeanGlobalJNDINameAssignment
HelloWorldClient类是HelloWorld的ejb3客户端调用类
IHelloWorldRemote是接口(两年没做C++,还是喜欢C++的表示法)
HelloWorldBean是IHelloWorldRemote的实现类
所需的jar包如下:
appserv-deployment-client.jar
appserv-ext.jar
appserv-rt.jar
javaee.jar
这些jar包在glassfish_home/lib目录下均可找到
IHelloWorldRemote代码如下:
package my.ejb3.iface;public interface IHelloWorldRemote public String sayHello();
HelloWorldBean代码如下:
package my.ejb3.impl;import javax.ejb.Remote;import javax.ejb.Stateless;import my.ejb3.iface.IHelloWorldRemote;@Stateless(mappedName=\"HelloWorldBean\")@Remote(IHelloWorldRemote.class)public class HelloWorldBean implements IHelloWorldRemote public String sayHello() return \"Hey, Hello World!\";
@Stateless标签表明这个类是一个无状态会话Bean,mappedName最好设置,理由后面解释
@Remote(IHelloWorldRemote.class)表明IHelloWorldRemote接口是一个远程接口,只能以远程方式来访问
至此,一个简单的EJB3会话Bean已完成,打包helloworld.jar
打开glassfish web控制台,部署helloworld.jar至“EJB模块”
HelloWorldBean的客户端调用代码:
import ... //此处省略public class HelloWorldClient public static void main(String[] args) Properties props = new Properties(); props.setProperty(\"java.naming.factory.initial\", \"com.sun.enterprise.naming.SerialInitContextFactory\"); props.setProperty(\"java.naming.factory.url.pkgs\", \"com.sun.enterprise.naming\"); props.setProperty(\"java.naming.factory.state\", \"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl\"); props.setProperty(\"org.omg.CORBA.ORBInitialHost\", \"localhost\"); props.setProperty(\"org.omg.CORBA.ORBInitialPort\", \"3700\"); InitialContext ctx = new InitialContext(props); IHelloWorldRemote helloWorld = (IHelloWorldRemote)ctx.lookup(\"HelloWorldBean\"); String result = helloWorld.sayHello(); System.out.println(result); catch (NamingException e) e.printStackTrace();
当然这里由于glassfish是在本机所以Host设置为localhost,如果非本地,请改为对应IP
glassfish的EJB端口默认为3700,如果安装过程有改动,请改为对应端口
如果顺利的话,控制台将打印出:
Hey, Hello World!
如果客户端和服务器是在同一台机器上,客户端的调用代码可以简化为:
public class HelloWorldClient public static void main(String[] args) InitialContext ctx = new InitialContext(); IHelloWorldRemote helloWorld = (IHelloWorldRemote)ctx.lookup(\"HelloWorldBean\"); String result = helloWorld.sayHello(); System.out.println(result); catch (NamingException e) e.printStackTrace();
这是因为InitialContext默认会读取jndi.properties文件,而appserv-rt.jar包中提供了一个这样的jndi.properties文件。另外,Host默认是localhost,端口默认是3700。
至此,一个HelloWorld的EJB3无状态会话Bean已完成。
注意:
mappedName就是在InitialContext lookup时使用的名称。
如果我们不设置这个mappedName,那么部署后的EJB名称是什么呢?在jboss中将会是HelloWorldBean/remote,而在glassfish中将使用IHelloWorldRemote接口的全名,即my.ejb3.iface.IHelloWorldRemote(注意是接口的全名)。为了去掉这些不必要的麻烦,建议设置mappedName。
glassfish上开发ejb的一些参考资料:
http://groups.google.com/group/glassfish_china/web/ejb
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#SessionBeanGlobalJNDINameAssignment
本文链接: http://benaglobal.immuno-online.com/view-711788.html
发布于 : 2021-03-24
阅读(0)
最新动态
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
联络我们