EJB3.0学习(二)第一个程序HelloWorld

 开发只存在Remote接口的无状态的BEAN
一、要定义一个会话BEAN,首先要定义一个包含他所有业务方法的接口。这个接口不需要任何注释,和普通的java接口一样定义。调用EJB的客户端通过使用这个接口引用从EJB窗口得到的会话Bean对象stub。
接口定义如下:

HelloWorld.java
packeage clchun.ejb3;
 public interface HelloWorld{
        public String Say(String name);
}

二、实现上面的接口并加入两个注释@Stateless和@Remote,@Stateless注释定义这是一个无状态的会话Bean,@Remote指明这个无状态Bean的Remote接口。
注意:
   在使用这两个注释需要使用一些EJB的类包,这些类包都可以在jboss安装目录的client,/server/all/deploy/jboss-aop-jdk50.deployer,/server/all/deploy/ejb3.deployer,/lib/endorsed等文件来下找到。
    下面是HelloWorld会话Bean的实现代码。
  HelloWorldBean.java   
       注意:实现类的命名规则是:接口名+Bean
  package clchun.ejb3.impl;
        import clchun.ejb3.HelloWorld;
        import  javax.ejb.Remote;
       import javax.ejb.Stateless;

       @Stateless
       @Remote({HelloWorld.class})
       public class HelloWorldBean implements HelloWorld{
              public String Say(String name){
                         return name+"说:Hello World!这是我的第一个无状态的EJB3!";
              }
      }

这个会话BEAN开发完成。现在把这个接口及BEAN编译并打包成JAR,打包好后,把这个包拷贝到[jboss安装目录]/server/all/deploy/目录下。
HelloWorld会话Bean发布完成后,现在就是客户端来调用他:
   当一个无状态会话Bean发布到EJB容器是,容器就会为它创建一个对象Stub,并把注册进容器的JNDI目录,客户端代码使用它的JNDI名从容器获得他的Stub。通过这个Stub,客户端可以调用他的业务方法,代码如下:
Test.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="clchun.ejb3.HelloWorld,javax.naming.*,java.util.Properties"%>
<%
            Properties props=new Properties();
            props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
           props.setProperty("java.naming.provider.url","localhost:1099");
          props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");
         InitialContext ctx;
        try{
              ctx=new InitialContext(props);
              HelloWorld helloWorld=(HelloWorld) ctx.lookup("HelloWorldBean/remote");
              out.println(helloWorld.Say("我");
        }
         catch(NamingException e)
         {
               out.println(e.getMessage());
          }
%>
其中:ctx = new InitialContext(props);
是设置JNDI 访问的环境在这里我要重点说明一下EJB JNDI 名称默认的命名规则,命名规则如下:
1> 如果EJB 应用打包成后缀为*.ear 的发布文件,默认的JNDI 名称是
访问本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
访问远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例:如果HelloWorld应用打包成HelloWorld.ear 文件,访问她远程接口的JNDI 名是:
HelloWorld/HelloWorldBean/remote
2> 如果EJB 应用打包成后缀为*.jar 的发布文件, 默认的JNDI 名称是
访问本地接口:EJB-CLASS-NAME/local
访问远程接口:EJB-CLASS-NAME/remote
例: HelloWorld应用打包成HelloWorld.jar 文件,访问她远程接口的JNDI名称是:HelloWorldBean/remote
我们把上面的客户端应用打成war 文件。然后把她拷贝到“[jboss 安装目录]/server/all/deploy”目录下。如
果war 文件的文件名为 EJBTest.war ,我们可以通过http://localhost:8080/EJBTest/Test.jsp访问客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值