EJB学习应用

来源:互联网 发布:网络词污是什么意思 编辑:程序博客网 时间:2024/05/17 23:33

测试EJB例子:D:/Test_Project/ejbtest

个人理解EJB主要用于远程访问功能,在YcsbTool中的应用是进行发送短消息

META-INF文件夹下配置ejb-jar.xmlejb-modeler-layout.xmlweblogic-ejb-jar.xml

在这个例子中需要写两个接口和一个类

一、程序部分,Eclipse平台

接口为Demo.java继承extends  EJBObjectjavax.ejb.EJBObject)这里写的业务的方法;EJBObject是远程接口。

这是demo的代码,其中exec方法是用户的自定义的业务实现。

DemoHome.java继承了EJBHome是本地接口

实现类DemoBean implements SessionBeanjavax.ejb.SessionBean)会自动生成四个方法ejbActivate();ejbPassivate();ejbRemove();setSessionContext();但还需要手动敲入方法ejbCreate();还有接口Demo.java中的方法体

(源代码地址D:/Test_Project/ejbtest/test

 

配置文件应该注意的在这里部署Demo.javaDemoHome.javaDemoBean.java

要部署一个 bean 时,必须将它的远程、本地和 bean 类文件以及 XML 部署描述信息封装到 jar 文件中。部署描述信息在 jar 中必须以特定名称 META-INF/ejb-jar.xml 存储。

以下配置文件建在META-INF文件夹下的ejb-jar.xml

配置文件META-INF/ejb-modeler-layout.xml这个文件

还有这个文件META-INF/weblogic-ejb-jar.xml

二、导入架包weblogic.jar

需要注意的是应该配置EJB的时候要把weblogic.jar配置上,

1.       需要在环境变量里面配置,

2.       有时候配置了环境变量后不一定好用

可以在Eclipse中已导入包的形式导入进来

 

选择项目右键选择属性

进入后选择Java Build Path如图

选择按钮“Add Library”如图

选择next按钮进入后选择User Libraries后如图

选择new,给库起名

因为已经导入过了weblogic架包了,我这里就命名个test架包吧,命名成功后会显示出来

然后选择Add JARS按钮

选择weblogic.jar架包所在路径即可

添加成功

OK就可以了

下面我们可以将我们写的EJB形成一个jar架包或者war架包了

看看怎么实现的吧:

选择咱们的工程后右键选择Export

进入后的界面是

选择Java文件夹下的JAR file然后选择next按钮

 

这里需要指定,你所形成的JAR file的路径,点击Browse按钮你可以指定路径,并命名,这个jar文件名要和你所指的EJB的名字相同,也就是以后要用到的EJBjndi name

然后点击Finish按钮就可以

就在指定目录下根据上述程序代码形成了这么个架包

 

三、在weblogic中部署

这还没完呢,还要把这个EJB部署到weblogic中呢

一定要新建个服务啊,然后需要注意的EJB的端口号最好不要和weblogic的应用程序的端口冲突,也就是说EJB需要一个服务,而weblogic的应用程序也需要一个服务,要两个服务一起跑,这样才可以的,我试过了,如果犯懒只用了一个服务的话后台会报错的,具体为什么我也不知道!

 

weblogic中部署前期我就不说了直接说进入控制台吧

选择EJB Modules

进入后选择Deploy a new EJB Module…

选择刚才的Demo.jar所在路径下

前面的单选按钮选中后选择Target Module按钮后进入这个页面

选择Deploy按钮

成功了!选择Testing选项卡后

可以看到了

那么如何测试呢?!

四、测试

我领导写了个测试文件

带有main函数的java文件

 

 

import java.util.ArrayList;

import java.util.Properties;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

import aaa.Demo;

import aaa.DemoHome;

 

 

public class myEjb {

       public String aaa(){

              return "Hello word";

       }

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              InitialContext ctx=null;

              DemoHome home =null;

              Demo send=null;

              ArrayList rtn = null;

              String phoneNO=""; //手机号

              try{

                     ctx=getInitialContext();

                     Object obj=ctx.lookup("Demo");    //这里就是我们配置的EJB文件的架包名

                     home=(DemoHome)PortableRemoteObject.narrow(obj,DemoHome.class);

                     send=home.create();                   

                     String fkmsg=send.exec();

                     System.out.println(fkmsg);

              }catch(Exception e){

                     e.printStackTrace();

                     System.out.println("Exception.....");

              }

       }

 

      

       private  static InitialContext getInitialContext() throws Exception {

                //EJB容器的地址

              Properties pro = new Properties();

              Properties properties;

              String url = "";

           String user = "";

           String password = "";

           String jndiName="";

 

         url ="T3://localhost:7001"; 

/*这里需要注意的是T3协议啊,

原来我就给弄错了弄成了http协议所以开始没跑通*/

          user = "";           //用户名一般都为空

          password = "";       //密码一般也为空

          jndiName = "Demo";   //还有这里配置的是jndi name

 

      properties = new Properties();

      properties.put(Context.INITIAL_CONTEXT_FACTORY,

                     "weblogic.jndi.WLInitialContextFactory");

      properties.put(Context.PROVIDER_URL, url);

      if (user != null) {

          properties.put(Context.SECURITY_PRINCIPAL, user);

          properties.put(Context.SECURITY_CREDENTIALS,

                         password == null ? "" : password);

      }

      return new javax.naming.InitialContext(properties);

               }

      

}

 

 

 

 

原创粉丝点击