[转帖]ejb版的helloWorld_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3700 | 回复: 1   主题: [转帖]ejb版的helloWorld        下一篇 
FDY1
注册用户
等级:网站编辑
经验:436455203
发帖:23
精华:2
注册:2013-3-6
状态:离线
发送短消息息给FDY1 加好友    发送短消息息给FDY1 发消息
发表于: IP:您无权察看 2013-3-7 16:10:26 | [全部帖] [楼主帖] 楼主

首先我先说明一下EJB开发的步骤:
1)编写Home接口(用create()方法产生远程接口的实例),Remote接口(用于声明业务逻辑方法)和EJB(用于实现Reomte接口中声明的业务逻辑方法)
2)编译以上文件
3)编写部署描述文件(ejb-jar.xml和weblogic-ejb-jar.xml)
4)将已经编译的class文件和部署文件打包
5)将以上jar包编译为ejb所用的jar包
6)部署,测试
下面我将按以上步骤以一个简单的HelloWorld的例子来说明
-------------------------------------------------------------------------------------------------------
Home接口代码:其必须继承EJBHome,并且声明返回Remote接口的create()方法

package testEJB;
import java.rmi.*;
import javax.ejb.*;
public interface HelloWorldHome extends EJBHome{
      public HelloWorld create()throws RemoteException,CreateException;
}
-------------------------------------------------------------------------------------------------------


Remote接口代码:其必须继承EJBObject,并且声明业务逻辑方法,如sayHello()

package testEJB;
import java.rmi.*;
import javax.ejb.*;
public interface HelloWorld extends EJBObject{
      public String sayHello()throws RemoteException;
}
--------------------------------------------------------------------------------------------------------


EJB类代码:其继承SessionBean,并且实现了业务逻辑方法和SessionBean接口中的所有方法

package testEJB;
import java.rmi.*;
import javax.ejb.*;
public class HelloWorldBean implements SessionBean{
      private SessionContext sct;
      private String words;
      public void ejbActivate() throws EJBException, RemoteException {
            // TODO Auto-generated method stub
      }
      public void ejbPassivate() throws EJBException, RemoteException {
            // TODO Auto-generated method stub
      }
      public void ejbRemove() throws EJBException, RemoteException {
            // TODO Auto-generated method stub
      }
      public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
            // TODO Auto-generated method stub
            this.sct=arg0;
      }
      public void ejbCreate(){
            words="Hello!~!~~!!~,nanqiangma";
      }
      public String sayHello(){
            String replay="this is a ejb example: "+words;
            return replay;
      }
}
--------------------------------------------------------------------------------------------------------------


接下来按照步骤编译,接着写部署描述文件,描述文件如下:
ejb-jar.xml文件,声明和EJB组件有关的信息

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>StatelessSessionBean</ejb-name>
<home>TradeHome</home>
<remote>Trade</remote>
<ejb-class>TradeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<env-entry>
<env-entry-name>limit</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>6000</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>StatelessSessionBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
----------------------------------------------------------------------------------------------------------


weblogic-ejb-jar文件,声明和运行环境有关的信息

<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<!-- Generated XML! -->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>StatelessSessionBean</ejb-name>
<stateless-session-descriptor>
<pool>
</pool>
<stateless-clustering>
</stateless-clustering>
</stateless-session-descriptor>
<transaction-descriptor>
</transaction-descriptor>
<enable-call-by-reference>True</enable-call-by-reference>
<jndi-name>StatelessSessionBean</jndi-name>
<remote-client-timeout>0</remote-client-timeout>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
---------------------------------------------------------------------------------------------------------------


接下来将class文件和部署文件打包(命令:jar -cvf testEJB.jar *)
接着编译已经打好的jar包:
java weblogic-ejbc -compiler javac testEJB.jar test_EJB.jar 将testEJB.jar编译为EJB容器能识别的test—_EJB.jar
最后部署(直接拷贝到weblogic 的Application目录下,或者在Console上部署),测试
测试代码:

package testEJB;
import java.rmi.RemoteException;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.util.Properties;
public class TestEJB{
      public HelloWorld init(){
            HelloWorld hw=null;
            try {
                  Properties pt=new Properties();
                  pt.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
                  pt.put(Context.PROVIDER_URL,"t3://localhost:7001");
                  Context ctx=new InitialContext(pt);
                  Object obj=ctx.lookup("testEJB");
                  HelloWorldHome hwh=(HelloWorldHome)PortableRemoteObject.narrow(obj,HelloWorldHome.class);
                  hw=hwh.create();
            }
            catch (Exception ex) {
                  ex.printStackTrace();
            }
            return hw;
      }
      public static void main(String args[]){
            TestEJB t=new TestEJB();
            try {
                  String replay=t.init().sayHello();
                  System.out.println(replay);
            }
            catch (Exception ex) {
                  ex.printStackTrace();
            }
      }
}




赞(0)    操作        顶端 
FDY1
注册用户
等级:网站编辑
经验:436455203
发帖:23
精华:2
注册:2013-3-6
状态:离线
发送短消息息给FDY1 加好友    发送短消息息给FDY1 发消息
发表于: IP:您无权察看 2013-3-7 16:11:15 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论