在Jboss下WebService调用EJB一

文章作者 100test 发表时间 2007:03:26 18:00:48
来源 100Test.Com百考试题网


一.开发环境
  
  1.Java SDK1.4
  2.Eclipse3.0中文版
  3.Jboss3.2应用服务器
  4.Windows 2000中文专业版
  
  二.环境变量的设置:
  
  以下是我自己机器的环境变量设置,如果是linux系统,设置有所不同:
  ANT_HOME=C:\ant
  JAVA_HOME=C:\j2sdk
  JBOSS_HOME=C:\jboss
  
  最后在系统变量的path变量中追加C:\jboss\bin.
  
  三.会话Bean的编写:
  
  在EJB中,会话BEAN需要实现一个远程接口和一个本地接口,那我们就先实现这个两个接口:
  
  1.远程接口:
  
  我们实现的是一个人员管理的用例,这个用例包含3个方法,代码如下:
  package com.ejb.sessionbean.
  /** * Remote interface for PersonManager.
  */public interface PersonManager
  extends javax.ejb.EJBObject{
  public com.pojo.Person getPersonByName( java.lang.String name )
  throws java.rmi.RemoteException.
  public void storePerson( com.pojo.Person person )
  throws java.rmi.RemoteException.
  public void 0deletePerson( java.lang.String name )
  throws java.rmi.RemoteException.}
  
  PersonManager接口实现的是EJB的远程接口EJBObject,包含3个方法,描述如下:
  
  (1)getPersonByName方法:通过人员的姓名返回一个Person对象;
  
  (2)storePerson方法,通过一个Person对象参数,往人员集合中存储一个人员对象;
  
  (3)0deletePerson方法,根据一个人员的姓名从人员集合中删除一个人员对象
  
  由于是远程接口,所以每个方法必须抛出RemoteException异常。
  
  2.本地HOME接口的实现:
  
  为了提高EJB的性能,如果是在同一个虚拟机中,EJB可以通过本地接口来调用方法,以提高运行速度。实现代码如下:
  
  /* * Generated by XDoclet - Do not edit!
  */package com.ejb.sessionbean.
  /** * Home interface for PersonManager.
  */public interface PersonManagerHome
  extends javax.ejb.EJBHome{
  public static final String COMP_NAME="java:comp/env/ejb/PersonManager".
  public static final String JNDI_NAME="PersonManagerHomeRemote".
  public com.ejb.sessionbean.PersonManager create()
  throws javax.ejb.CreateException,java.rmi.RemoteException.}
  
  PersonManagerHome接口只有一个方法,create方法,它与会话bean的具体实现类中ejbCeate方法一一对应。
  
  3.具体实现类:
  
  PersonManagerBean是会话BEAN的具体实现类,必须实现SessionBean接口,而且同时实现了在远程接口中定义的相关业务逻辑方法,具体实现代码如下
  
  package com.ejb.sessionbean.import java.rmi.RemoteException.import java.util.*.import javax.ejb.EJBException.import javax.ejb.SessionBean.import javax.ejb.SessionContext.import com.pojo.*./*** @ejb.bean description = "PersonManagerBean" display-name = *      "PersonManagerBean" jndi-name="PersonManagerHomeRemote" *      name="PersonManager" type="Stateless" view-type="remote" *
  transaction-type="Container" * @jboss-net.web-service urn = "PersonManagerService" expose-all = "true" */public class PersonManagerBean    implements SessionBean{  private SessionContext ctx.  private static Map database.  /**   * @ejb.create-method   *    */  public void ejbCreate()  {  }  public void setSessionContext( SessionContext ctx ) throws EJBException,
  RemoteException  {
  // TODO 自动生成方法存根
  }  public void ejbRemove() throws EJBException, RemoteException
  {
  // TODO 自动生成方法存根
  }
  public void ejbActivate() throws EJBException, RemoteException
  {
  // TODO 自动生成方法存根
  }
  public void ejbPassivate() throws EJBException, RemoteException
  {
  // TODO 自动生成方法存根
  }
  /**
  * @ejb.interface-method view-type = "remote"
  * @param name
  * @return
  */
  public Person getPersonByName( String name )
  {
  if (database != null)
  {
  return (Person) database.get(name).
  }
  return null.
  }
  /**
  * @ejb.interface-method view-type = "remote"
  * @param person
  */
  public void storePerson( Person person )
  {
  if (database == null)
  {
  database = new HashMap().
  }
  database.put(person.getName(), person).
  }
  /**
  * @ejb.interface-method view-type = "remote"
  * @param name
  */  public void 0deletePerson( String name )
  {
  if (database != null)
  {
  database.remove(name).
  }
  }}

相关文章


在Jboss下WebService调用EJB二
在Jboss下WebService调用EJB一
如何在JBoss MySQL环境下运行obe
判断JAVA_HOME友好提示用户
tomcat深入??内部结构描述
如何同时启动多个Tomcat服务器
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛