首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Weblogic10 + EJB3入门教程(一):编写第一个无状态会话Bean(Stateless Session Bean)

2013-10-31 
Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)在本文主要介绍如何来开

Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)

在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean。开发EJB3 Stateless Session Bean要比开发EJB2 Stateless Session Bean容易得多,只需要几个注释就可以搞定。读者可按如下的步骤来开发和调用EJB3 Stateless Session Bean:

  第1步:编写远程接口

  每一个Session Bean需要一个远程接口,该接口的代码如下:

?

packag ecom.earth;import javax.ejb.Remote;// 此处必须使用@Remote注释指定该接口为远程接口@Remotepublic interface CompanyRemote{  public String getName();  public Employee[] getEmployees();}

?在CompanyRemote接口中定义了两个方法,分别返回一个字符串和一个Employee类型的数组。

?

  第2步:编写Employee类

  Employee类是一个实现implements java.io.Serializable接口的JavaBean,代码如下:

?

package com.earth;public class Employee implements java.io.Serializable{  private Stringname;  private Stringjob;  private int age;  public String getName()  {    return name;  }  public void setName(String name)  {    this.name=name;  }  public String getJob()  {    return job;  }  public void setJob(String job)  {    this.job=job;  }  public int getAge()  {    return age;  }  public void setAge(int age)  {    this.age=age;  }}

?第3步:编写Stateless Session Bean

?

  Session Bean需要实现CompanyRemote接口,代码如下:

package com.earth;import java.util.List;import java.util.ArrayList;import javax.ejb.Remote;import javax.ejb.Stateless;@Stateless(mappedName="Company")public class Company implements CompanyRemote{  public Employee[] getEmployees()  {    Employee[] employees=newEmployee[2];    employees[0]=newEmployee();    employees[0].setName("superman");    employees[0].setJob("CEO");    employees[0].setAge(1234);        employees[1]=newEmployee();    employees[1].setName("擎天柱");    employees[1].setJob("CTO");    employees[1].setAge(4321);        return employees;  }  public String getName()  {        return"地球软件有限公司";  }}

?这个Session Bean使用了@Stateless注释指定了该Session Bean是无状态的,并使用了mappedName属性指定该Session Bean的JNDI名的前一部分,如果mappedName属性的值是Company,则该Session Bean的JNDI名是Company#com.earth.CompanyRemote。注意JNDI的名字需要以大写开头,否则会报javax.naming.NameNotFoundException: While trying to lookup 'person#com.ejb3.stateless.demo.PersonRemote' didn't find subcontext 'person#com'. Resolved '' 类似这种错误。

  第4步:编译.java文件,并生成.jar文件

  将上面三个.java文件放到同一个目录下,并使用如下的命令生成相应的.class文件:

javac-d.-classpath.;C:beawlserver_10.3serverlibweblogic.jar*.java

?注意:在编译.java文件时要将在classpath环境变量或javac的-classpath参数中指定weblogic.jar文件,假设WebLogic10安装在了C盘的bea目录,则weblogic.jar文件位于C:"bea"wlserver_10.3"server"lib目录中,本例使用了weblogic10.3。

  在生成.class文件后,使用如下的命令生成company.jar文件:

jar cvf company.jar com

?第5步:发布EJB

  发布EJB的方法很多,然而最简单的是直接将company.jar文件复制到如下的目录:

C:bea\user_projects\domains\base_domain_new\autodeploy

?其中base_domain_new是域名,读者也可将company.jar文件复制到其他域的autodeploy目录中。

  启动Weblogic,该EJB自动发布。读者可以使用如下的URL来查看在当前Weblogic服务器中注册的JNDI:

  http://localhost:7001/console/consolejndi.portal?_nfpb=true&_pageLabel=JNDIHomePage&server=AdminServer

  其中AdminServer为Weblogic的服务名,可能在读者的机器上是其他的服务名,请使用如下的URL进行Weblogic Console进行查看:

  http://localhost:7001/console

  安装EJB后,本机注册的JNDI如下图所示。

Weblogic10 + EJB3入门教程(一):编写第一个无状态会话Bean(Stateless Session Bean)

第6步:编写客户端程序

  调用EJB的客户端代码如下:

import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import com.earth.*;public class TestCompany{  public static void main(String[] args) throws Exception  {    Properties props=newProperties();    props.setProperty(Context.INITIAL_CONTEXT_FACTORY,        "weblogic.jndi.WLInitialContextFactory");    props.setProperty(Context.PROVIDER_URL,"t3://192.168.17.127:7001");    InitialContext ctx=newInitialContext(props);    CompanyRemote companyRemote=(CompanyRemote)ctx        .lookup("Company#com.earth.CompanyRemote");    System.out.println(companyRemote.getName());    Employee[]employees=companyRemote.getEmployees();    for(Employee employee:employees)    {      System.out.println("name:"+employee.getName());      System.out.println("job:"+employee.getJob());      System.out.println("age:"+employee.getAge());      System.out.println("-------------------------");          }  }}

?使用如下的命令编译TestCompany.java:

javac -classpath.;company.jar;E:beawlserver_10.3serverlibweblogic.jarTestCompany.java

?注意:TestCompany.java与company.jar文件需要在同一目录下。

  由于调用客户端的代码并不一定在安装WebLogic的机器上运行,因此,在将TestCompany.class和company.jar(发布到客户端的这个jar文件只需要Employee.class和CompanyRemote.class文件即可,Company.class可以从该jar文件中删除)发布到客户端时还需要带一些WebLogic自身的jar文件。虽然Weblogic中有一个wlclient.jar文件,但光有这个文件还不够,不了方便提取客户端需要的jar文件,Weblogic提供了一个jar包,通过该包,可以将客户端需要的所有.class文件打成一个jar包。

  这个jar文件是C:"bea"modules"com.bea.core.jarbuilder_1.2.0.0.jar,可通过如下的命令行来生成客户端需要的jar包:

java -jar ../../../modules/com.bea.core.jarbuilder_1.2.0.0.jar

?注意:上面的命令必须在C:"bea"wlserver_10.3"server"lib目录中执行。

  在执行上面的命令后,将在E:"bea"wlserver_10.3"server"lib目录生成一个wlfullclient.jar文件,将该文件与TestCompany.class、company.jar一同复制到客户端的机器上即可。并通过如下的命令来执行TestCompany.class:

java -classpath.;company.jar;wlfullclient.jar Test Company

?执行上面的命令后的输出结果如下面两个图所示:

Weblogic10 + EJB3入门教程(一):编写第一个无状态会话Bean(Stateless Session Bean)

?

本文转载自http://tech.ddvip.com

?

?

热点排行