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

三、编写第一个EJB应用程序
搞清了基本的分布式对象应用程序机理,下面我们就来实地做一个简单的EJB应用程序,一步一步找着做,你会发现??它真的不难!
EJB 中的Beans有两种,一种是会话Bean(SessionBean),一种是实体Bean(EntityBean)。其中,SessionBean又分为有状态(Stateful)和无状态(Stateless)两种,EntityBean又分为容器管理(Container Managed)和自管理(Bean Managed)两种。我们要做的第一个EJB应用程序是:写一个无状态会话Bean(Stateless SessionBean)。
这个程序的功能是:实现一个远程加密、解密演示系统,用户把一段明文发到服务器端,服务器端执行一定的加密算法(按先后顺序倒排)得到密文,然后把加密完成后的密文发到客户端显示给用户;用户还可发一段加密后的密文到服务器端,服务器端执行一定的解密算法(倒排)得到明文,然后回传显示给用户。
注:这里使用的是Windows平台,并且假定JDK已经装好,并且认为你至少是编过一个Java程序的程序员。
第一步 下载、安装J2EE开发工具箱
编写EJB应用程序必须下载相关的工具箱才行,作为学习试验之用,不须采用很高档的应用服务器(比如:WebLogic、WebSphere等),只需采用SUN公司提供的免费开发包就可以了,下载地址为:ftp://202.116.77.69/development/Java/j2sdkee1.2/j2sdkee-1_2_1-win.exe
下载后执行这个应用程序,即可完成J2EESDK的本地安装(假定安装在C:j2sdkee1.3目录)。安装之后还不能立刻用,需要把 C:j2sdkee1.3libj2ee.jar加到系统的ClassPath变量中去,装过JDK的朋友对此肯定不会陌生。做完这些后,最终系统的 ClassPath应该至少有.;C:j2sdk1.4.0-beta3lib ools.jar; C:j2sdk1.4.0-beta3libdt.jar;C:j2sdkee1.3libj2ee.jar这几项。
���后,把C:j2sdkee1.3in目录加到系统的Path变量中,也就是说,系统的Path变量至少应该有%PATH%;C:j2sdkee1.3in;C:j2sdk1.4.0-beta3in这几项。
以上两步其实和配置J2SE的方法类似,配过JDK的朋友一定不陌生。
第二步 建立应用程序目录结构
如你所知的,Java程序中目录结构是很重要的,因为Java中的包(package)是与目录相关的,同时,目录结构不同,程序打包生成(jar)的结构也不同,所以必须引起重视。
我们编写的第一个EJB应用程序的目录结构如图二所示,由上可见,所有的java程序都放在securitybeans目录下(它们都属于一个名为 securitybeans的package)。客户代码主要由jsp和html文件组成:musecurityjsp.html文件为静态网页,主要用于显示系统的首页,提供用户输入明文/密文的界面,并负责把用户输入的内容提交给下一个页面(SecuriryProcessPage.jsp);SecurityProcessPage.jsp文件为用JSP(Java Server Pages)编写的动态网页,主要用于生成EJB对象实例,并向EJB对象发送加密/解密请求,并在页面上显示加密/解密结果供用户浏览。

第三步 编写EJB代码

由前述的目录结构可知,EJB代码包括三个Java文件。

1、Security.java是一个接口,它定义了基本的加密、解密调用接口。注意,由于Security接口可生成EJB对象,所以它必须继承自EJBObject接口。其源代码如下:

文件“Security.java”

package securitybeans;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface Security extends EJBObject
{
      public String encrypt( String strSource ) throws RemoteException;
      public String decrypt( String strTarget ) throws RemoteException;
}/* Security */


2、SecurityHome接口可生成EJBHome对象,它负责直接与客户打交道,接收客户的请求,返回处理结果。在EJB规范中,SecurityHome必须继承自EJBHome接口。其源代码如下:
文件“SecurityHome.java”

package securitybeans;
import java.rmi.RemoteException;
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
public interface SecurityHome extends EJBHome
{
      Security create() throws CreateException, RemoteException;
}/* EJBHome */


3、 SecurityBean类才是真正做“正事”的类,它负责对SecurityHome对象传来的字符串执行加密、解密算法,将得到的结果返回给 SecurityHome对象。它是一个Stateless SessionBean,按照EJB规范,必须实现SessionBean接口。其源代码如下:
文件“ScurityBean.java”

package securitybeans;
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class SecurityBean implements SessionBean
{
      public String encrypt( String strSource )
      {
            String strTarget = "";
            for ( int i = strSource.length() - 1; i >= 0; i -- )
            {
                  strTarget += strSource.charAt( i );
            }//for
            return strTarget;
      }//encrypt()
      public String decrypt( String strTarget )
      {
            String strSource = "";
            for ( int i = strTarget.length() - 1; i >= 0; i -- )
            {
                  strSource += strTarget.charAt( i );
            }//for
            return strSource;
      }//decrypt()
public void ejbActivate() {}//ejbActivate()
public void ejbRemove() {}//ejbRemove()
public void ejbPassivate() {}//ejbPassivate()
public void setSessionContext( SessionContext sc ) {}//setSessionContext()
public void ejbCreate() {}//ejbCreate()
public void ejbLoad() {}//ejbLoad()
public void ejbStore() {}//ejbStore()
}/* SecurityBean */


SecurityBean中的ejbActivate()、ejbPassivate()等方法都是SessionBean接口中的方法,由于本程序中这里不需要有实际内容,因此直接实现它就可以了。




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