(3)EJB3.0 开发具有本地接口的----无状态bean
2012-06-22 11:03
471 查看
一:开发本地接口
HelloWOrld项目:
注意:
首先:启动jboss,在build.xml中发布helloworld项目。
要把helloworld项目导入到EJBClient项目中。
然后:把EJBClient项目打成war包,放到安装jboss的deploy的发布目录、
最后:在浏览器中输入本地接口。
不在同一个jvm类 只能通过远程。
如果客户端 和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。
二:既有本地又有远程的调用。
以下是配置文件ANT。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="javax.naming.*,cn.itm.ejb3.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% try { InitialContext ic = new InitialContext( ); HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/local"); // HelloWorldLocal hw = (HelloWorldLocal) ic.lookup("HelloWorldBean/local"); String message = hw.sayHello("本地人 "); out.println(message); }catch (NamingException e) { e.printStackTrace(); } %> </body> </html>
HelloWOrld项目:
package cn.itm.ejb3; public interface HelloWorld { // 业务方法: public String sayHello(String name); }
package cn.itm.ejb3.impl; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; import cn.itm.ejb3.HelloWorld; import cn.itm.ejb3.HelloWorldLocal; @Stateless // 指明EJB他是一个无状态的会话bean。 @Local(HelloWorld.class) // 本地接口。 /*@Remote(HelloWorld.class) // @Local(HelloWorldLocal.class) // 如果客户端 和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。 */ public class HelloWorldBean implements HelloWorld,HelloWorldLocal{ @Override public String sayHello(String name) { return name + "说:您好,世界!!"; } }
package cn.itm.test; import javax.naming.InitialContext; import javax.naming.NamingException; import cn.itm.ejb3.HelloWorld; public class EJBTest { /** * @param args */ public static void main(String[] args) { try { InitialContext ic = new InitialContext( ); HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/local"); // HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote"); // 不在同一个jvm类 只能通过远程。 String message = hw.sayHello("天海"); System.out.println(message); } catch (NamingException e) { e.printStackTrace(); } } }
注意:
首先:启动jboss,在build.xml中发布helloworld项目。
要把helloworld项目导入到EJBClient项目中。
然后:把EJBClient项目打成war包,放到安装jboss的deploy的发布目录、
最后:在浏览器中输入本地接口。
不在同一个jvm类 只能通过远程。
如果客户端 和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。
二:既有本地又有远程的调用。
package cn.itm.ejb3.impl; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; import cn.itm.ejb3.HelloWorld; import cn.itm.ejb3.HelloWorldLocal; @Stateless // 指明EJB他是一个无状态的会话bean。 @Remote(HelloWorld.class) // @Local(HelloWorldLocal.class) // 如果客户端 和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。 public class HelloWorldBean implements HelloWorld,HelloWorldLocal{ @Override public String sayHello(String name) { return name + "说:您好,世界!!"; } }
package cn.itm.test; import javax.naming.InitialContext; import javax.naming.NamingException; import cn.itm.ejb3.HelloWorld; public class EJBTest { /** * @param args */ public static void main(String[] args) { try { InitialContext ic = new InitialContext( ); HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote"); // 不在同一个jvm类 只能通过远程。 String message = hw.sayHello("天海"); System.out.println(message); } catch (NamingException e) { e.printStackTrace(); } } }
package cn.itm.ejb3; public interface HelloWorldLocal extends HelloWorld { }
package cn.itm.ejb3; public interface HelloWorld { // 业务方法: public String sayHello(String name); }
package cn.itm.test; import javax.naming.InitialContext; import javax.naming.NamingException; import cn.itm.ejb3.HelloWorld; public class EJBTest { /** * @param args */ public static void main(String[] args) { try { InitialContext ic = new InitialContext( ); HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote"); // 不在同一个jvm类 只能通过远程。 String message = hw.sayHello("天海"); System.out.println(message); } catch (NamingException e) { e.printStackTrace(); } } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="javax.naming.*,cn.itm.ejb3.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% try { InitialContext ic = new InitialContext( ); HelloWorldLocal hw = (HelloWorldLocal) ic.lookup("HelloWorldBean/local"); String message = hw.sayHello("本地人 "); out.println(message); }catch (NamingException e) { e.printStackTrace(); } %> </body> </html>
以下是配置文件ANT。
<?xml version="1.0" encoding="UTF-8"?> <!-- name中指的是项目名称。basedir指的是与build.xml的同级目录 --> <!-- (1)basedir 代表 项目所在的路径。 --> <project name="HelloWorld" basedir="."> <!-- 项目源文件 所在的目录。--> <property name="src.dir" value="${basedir}\src" /> <!-- 指向环境变量中系统变量 --> <property environment="env" /> <!-- 指向系统变量中的JBOSS_HOME变量 ,可以得知JBOSS_HOME的安装地址 --> <property name="jboss.home" value="${env.JBOSS_HOME}" /> <property name="jboss.server.config" value="default" /> <!-- class文件存在的目录 --> <property name="build.dir" value="${basedir}\build" /> <path id="build.classpath"> <!-- 包含 client路径下的所有 jar文件--> <fileset dir="${jboss.home}\client"> <include name="*.jar" /> </fileset> <pathelement location="${build.dir}" /> </path> <target name="prepare"> <delete dir="${build.dir}" /> <mkdir dir="${build.dir}" /> </target> <!-- depends="prepare" 确保 先执行上面的代码,在执行下面的代码 --> <target name="compile" depends="prepare" description="编译"> <!-- class 存放到 destdir这个目录。在调用javac 这个目录就必须建立起来--> <javac srcdir="${src.dir}" destdir="${build.dir}" > <classpath refid="build.classpath" /> </javac> </target> <target name="ejbjar" depends="compile" description="创建EJB发布包"> <jar jarfile="${basedir}\${ant.project.name}.jar"> <fileset dir="${build.dir}"> <include name="**/*.class" /> </fileset> </jar> </target> <target name="deploy" depends="ejbjar" description="发布ejb"> <copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" /> </target> <target name="undeploy" description="卸载ejb"> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar" /> </target> </project>
相关文章推荐
- EJB通过ANT提高EJB应用的开发效率、开发具有本地接口的无状态bean、开发有状态bean
- EJB通过ANT提高EJB应用的开发效率、开发具有本地接口的无状态bean、开发有状态bean
- 开发具有本地接口的无状态bean
- EJB通过ANT提高EJB应用程序的开发效率、无状态发展本地接口bean、开发状态bean
- EJB3.0开发本地接口的无状态会话bean
- EJB3.0开发指南:有状态会话Bean
- EJB3.0开发有状态会话bean
- (1)EJB3.0 简介以及开发第一个无状态的会话bean 以及 客户端【关于JNDI】
- 开发实现本地接口的无状态的会话bean
- EJB3.0开发指南:有状态会话Bean
- 开发远程和本地接口的无状态会话bean
- 专稿:实战EJB之三 开发会话Bean(有状态会话Bean)
- EJB 3.0 开发指南之实体Bean(一)
- EJB 3.0 开发指南之实体Bean(二)
- 传智播客ejb学习,EJB中的三种bean及开发一个无状态会话bean
- Eclipse3.2.1中开发EJB 3.0的Message Driven Bean(MDB)
- 开发远程接口的无状态会话bean
- EJB开发第一个无状态会话bean、开发EJB客户端
- EJB3.0开发指南:实体Bean的继承:每类一表策略
- EJB开发第一个无状态会话bean、开发EJB客户端