EJB的简单使用

来源:互联网 发布:建筑设计效果图软件 编辑:程序博客网 时间:2024/06/15 19:39

package org.ejb3.inter;import javax.ejb.Remote;//指定HelloWorldBeanRemote是个远程接口.如果不加这个注解的话就是本地接口.@Remotepublic interface HelloWorldBeanRemote {public String sayHi(String name);}

package org.ejb3.inter;import javax.ejb.Local;//指定HelloWorldInter是个本地接口.继承远程接口@Localpublic interface HelloWorldBeanLocal extends HelloWorldBeanRemote {}

jndi.properties

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.provider.url=localhost\:1099


package org.ejb3.impls;import javax.ejb.Stateless;import org.ejb3.inter.HelloWorldBeanRemote;import org.ejb3.inter.HelloWorldBeanLocal;//指定这个EJB是个无状态的会话bean.@Statelesspublic class HelloWorldImpls implements HelloWorldBeanRemote,HelloWorldBeanLocal {@Overridepublic String sayHi(String name) {return name+"你好,世界!!";}}


Java SE项目时 打成jar包发布到%JBOSS_HOME%\server\default\deploy

<?xml version="1.0" encoding="UTF-8"?><!-- name:项目名称basedir:项目在build.xml所在的路径 --><project name="helloworld_ejb3" basedir="."><!-- name:项目源文件  value:项目源文件所在的路径.${basedir}是指project元素的basedir属性--><property name="src.dir" value="${basedir}\src"/><property environment="env"/><property name="jboss.home" value="${env.JBOSS_HOME}"/><property name="jboss.server.config" value="default"/><property name="build.dir" value="${basedir}\build"/>        <path id="build.classpath">        <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>    <target name="compile" depends="prepare" description="编译">    <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>        <!--把persistence.xml打包到META-INF目录下-->        <!-- <metainf dir="${src.dir}\META-INF"></metainf> -->       </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>

启动jboss服务器,编译-->创建EJB发布包-->发布EJB(-->卸载EJB)


package org.ejb3.test;import java.util.Properties;import javax.naming.InitialContext;import javax.naming.NamingException;import org.ejb3.inter.HelloWorldBeanRemote;import org.ejb3.inter.HelloWorldBeanLocal;public class EJBClient {public static void main(String[] args) {try {//当new InitialContext()时,底层会自动读取jndi.properties文件,设置上下文信息InitialContext ctx=new InitialContext();//ctx.lookup方法参数的规则://(1.)如果打包成后缀为*.ear的企业级应用文件:默认全局的JNDI名称为:    //本地接口:EARFileBaseName(ear文件名)/EJBClassName(实现类)/local//远程接口:EARFileBaseName(ear文件名)/EJBClassName(实现类)/remote//(2.)如果打包成后缀为*.jar文件:默认全局的JNDI名称为:    //本地接口:EJBClassName(实现类)/local//远程接口:EJBClassName(实现类)/remote//返回的是实现HelloWorldInter接口的代理对象.而并非在服务端的那个HelloWorldInter. //如果打成*.ear则为:helloworld/HelloWorldImpls/remote//这里调用的远程接口HelloWorldBeanRemote helloWorldBeanRemote = (HelloWorldBeanRemote)ctx.lookup("HelloWorldImpls/remote");System.out.println(helloWorldBeanRemote.sayHi("青岛说:"));} catch (NamingException e) {e.printStackTrace();}}}




原创粉丝点击