开发SessionBean

session

分以下几个步骤:

1 建立测试web模块

2 建立idea ejb模块,编写ejb

3 编译,打包

4 写测试页面

5 发布ejb,web测试模块,测试ejb

 

1 建立web测试模块。

 

在默认的user_projects\domains\mydomain\applications目录下,新建一个名为web的文件夹。这个文件夹就是我们测试ejb的web模块。

 

在web文件夹下新建WEB-INF文件夹,在WEB-INF下新建lib文件夹。

 

在WEB-INF下新建web.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

</web-app>

 

ok。web测试模块完成。

 

2 建立idea ejb模块,编写ejb

打开idea,选择 file-new-ejb modules,把module name 改为“EjbSamples”,如下图:

在服务器选项,选择weblogic,其余都按默认设置。最后点finish。

 

在src文件夹下新建包。包名如下:com.diegoyun.ejb.slb,如下图:

把鼠标放到模块名上,右键,选择:new-sessionBean。然后在弹出的属性框设置如下:

<ejb-name> :输入Helloworld

Package:选择/输入com.diegoyun.ejb.slb

其余信息idea会帮你自动设置,整个属性框属性如下:

点击ok结束

 

这时会弹出ejb的属性配置界面,如下:

在Display name,输入 HelloworldEJB

 

然后切换到weblogic server页,输入jndi name如下:ejb/session/HelloworldEJB

 

界面如下:

关闭这个属性页。Idea已经帮你写好了ejb的配置信息。可以打开META-INF/下的ejb-jar.xml和weblogic-ejb-jar.xml进行查看。

 

这时在com.diegoyun.ejb.slb下,应该有三个文件:Helloworld,HelloworldBean和HelloworldHome

 

在Helloworld接口中添加一个方法如下:

public interface Helloworld extends EJBObject {

    public String getGreeting(String name)throws RemoteException;

}

在HelloworldBean接口中添加一个方法如下:

public class HelloworldBean implements SessionBean {

……………

//omit others

    public String getGreeting(String name){

        return "Hello," + name;

    }

}

 

ok.你的Helloword ejb已经写好了。

 

3 编译,打包,发布ejb

 

本例采用web方式访问ejb。并且没有把web模块和ejb jar都打包成ear。所以必须先把ejb源码编译成jar,发布这个jar,然后复制到测试web模块的lib目录下,这样web页面才能访问到bean。

  本例采用ant脚本来执行编译和打包等命令。在idea的ejbSamples模块下新建一个build.xml脚本,内容如下:

<project name="ejb-example" default = "all" basedir=".">

    <!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:\Devs\bea\weblogic81 erver\lib\weblogic.jar"/>

    <property name="uploadPath" value="D:\Devs\bea\user_projects\domains\mydomain\myserver\upload"/>

    <property name="webPath" value="D:\Devs\bea\user_projects\domains\mydomain\applications\web\WEB-INF\lib"/>

    <!-- End personal conf info -->

 

    <property name="source" value="src"/>

    <property name="meta" value="META-INF"/>

    <property name="build" value="${basedir}/build"/>

    <property name="packinfo" value="${build}/META-INF"/>

    <property name="dist" value="${basedir}/dist"/> 

 

    <target name="init">

    <!-- Create the time stamp -->

        <tstamp/>

        <mkdir dir="${build}"/>

        <mkdir dir="${dist}"/>

        <mkdir dir="${packinfo}"/>

    </target>

    <target name="ejb">

        <javac srcdir="${source}" classpath="${j2eelib}"

              destdir="${build}" includes="**/*.java"/>

    </target>

    <target name="copy" depends="ejb">

        <copydir src="${meta}" dest="${packinfo}" includes="**/*.xml"/>

    </target>

    <target name="ejb-jar" depends="ejb">

       <jar jarfile="${dist}/EjbSamples.jar" includes="**/*.xml,

              **/*.class" basedir="${build}"/>

    </target>

    <!-- copy jar to weblogic upload ant web diretory -->

    <target name="copy-to-path" depends="ejb-jar">

        <copyfile src="${dist}/EjbSamples.jar" dest="${uploadPath}/EjbSamples.jar" forceoverwrite="true"/>

        <copyfile src="${dist}/EjbSamples.jar" dest="${webPath}/EjbSamples.jar" forceoverwrite="true"/>

    </target>

    <target name="all" depends="init,ejb,copy,ejb-jar,copy-to-path"/>

</project>

 

针对你本机weblogic的安装,修改脚本以下信息即可:

<!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:\Devs\bea\weblogic81 erver\lib\weblogic.jar"/>

    <property name="uploadPath" value="D:\Devs\bea\user_projects\domains\mydomain\myserver\upload"/>

    <property name="webPath" value="D:\Devs\bea\user_projects\domains\mydomain\applications\web\WEB-INF\lib"/>

    <!-- End personal conf info -->

 

<property name="j2eelib"> :由于本例采用weblogic.jar进行javac编译,所以必须知道该jar的位置。通常,它位于<bea diretory>\weblogic81 erver\lib\下。例如,如果你的weblogic安装在C盘,那么你的jar应该如此设置:

<property name="j2eelib" value="C: \bea\weblogic81 erver\lib\weblogic.jar"/>

 

<property name=" uploadPath "> :weblogic放置上传文件的目录。通常位于<bea diretory>\user_projects\domains\<your domain>\<your server>\upload文件夹下。如果你采用的是weblogic默认安装,那么<your domain>通常是mydomain(由weblogic默认创建),<your server>通常是myserver。例如,如果你的weblogic安装在C盘,并且domain和server都采用默认,那么属性设置如下:

<property name="uploadPath" value="C:\bea\user_projects\domains\mydomain\myserver\upload"/>

 

<property name="webPath">:web测试模块的lib目录。按照你自己本机配置进行设置。

 

至此,ejb的编写,配置工作全部完成。运行刚才的脚本。

Ant build.xml

然后查看 web测试模块/WEB-INF/lib 下是否有ejb jar,weblogic的upload目录下是否有ejb jar,如果没有,请按所列步骤仔细检查你的配置情况。

 

4 写测试页面进行测试

在web模块下新建hello.jsp,内容如下:

<%@ page language="java" %>

<%@ page import="com.diegoyun.ejb.slb.Helloworld,

                com.diegoyun.ejb.slb.HelloworldHome,

                 javax.ejb.*,

                 java.math.*,

                 javax.naming.*,

                 javax.rmi.PortableRemoteObject,

                 java.rmi.RemoteException" %>

 

<html>

<head>

    <title>hello</title>

</head>

 

<body bgcolor="white">

<h1><b><center>Stateless Bean Examples</center></b></h1>

<hr>

 

<form name="frm" method="post"  action="hello.jsp">

    <input type="text" value="Diego" name="myname"/>

    <input type="submit" value="Submit"/>

</form>

<p>

<p>See :</p>

<br>

<%

    Helloworld hello = null;

    String name = null;

    name = request.getParameter("myname");

    if(name!=null && !"".equals(name)){

       try {

        InitialContext ic = new InitialContext();

        Object objRef = ic.lookup("ejb/session/HelloworldEJB");

        HelloworldHome home = (HelloworldHome)PortableRemoteObject.narrow(objRef, HelloworldHome.class);

        hello = home.create();

       } catch (RemoteException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (CreateException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (NamingException ex) {

           System.out.println("Unable to lookup home: "+ "HelloworldHome "+ ex.getMessage());

       }

    }

    if(hello!=null && !"".equals(hello)) {

        String s = hello.getGreeting(name);

        out.print(s);

    }

%>

 

</body>

</html>

 

5 发布ejb,web测试模块,调试ejb

发布ejb。启动weblogic server,打开控制台。

然后在ejb发布页面,选择upload文件夹下的jar进行发布,默认路径应是:<bea diretory>\user_projects\domains\mydomain\myserver\upload

发布web模块

在deploy web application modules下,定位到<bea diretory>\user_projects\domains\mydomain\applications下,可以看到我们建立的web模块。点“Target Module”进行发布,name取名为“web”

ok。所有工作均已完成!

打开浏览器,输入:http://localhost:7001/web/hello.jsp

点submit,就可以看到hello字样。

FAQ:

 

1 为什么在打包ejb之后,把ejb copy到weblogic的upload目录下?(这个过程是由build.xml脚本完成的)

 

答:一般情况下如果你修改了ejb,那么你就要在weblogic控制台重新deploy ejb的jar。经常进行这项工作是很烦人的。幸好weblogic提供了upload的特性,你把jar 上传到weblogic,然后deploy upload文件夹里的这个jar。以后每次在你修改ejb,打包成jar之后,你用新的jar覆盖upload目录下的jar,就不用重新deploy jar了。通过这种方式模拟了jboss的热部署特性。

  其他模块,例如war,ear,都可以通过这种方式来deploy。

时间: 2024-11-02 17:41:36

开发SessionBean的相关文章

eclipse+JBoss 5+EJB3开发指南(1):编写第一个无状态的SessionBean

本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp 在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB程序以jar文件的形式 进行发布.这些jar文件将被放在

eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp     在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB

eclipse + JBoss 5 + EJB3开发指南(1):编写无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp     在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB

eclipse+JBoss 5+EJB3开发指南(2):编写有状态的SessionBean

编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状 态注释(@Stateful)即可.如果使用Stateful Sessionbean,客户端在使用同一个SessionBean对象实例 时可以保存状态,也就是说,在多次引用该对象时实际上在服务端是使用的同一个Sessionbean的对象实 例,而无状态sessionbean使用了不同的sessionbean对象实例,因此,是无法保存状态的. 下面将编写一个简单的购物车的例子,该

用EJB 3.0开发企业级Bean组件初体验

阅读提要 EJB 3.0规范的最终稿已经提交到JCP,如果不出意外EJB3.0将在2006年正式发布.本文作为探讨EJB 3.0公共草案三系列中的第一篇,将解释EJB 3.0和企业Bean组件的基本概念:另外,你还学习到怎样使用JBoss和Maven来开发基于EJB 3.0的企业级bean组件. 尽管EJB 3.0规范还没有正式发行,但是它已经在Java开发社群中引起广泛兴趣--无论是对其拥护者还是其竞争对手.所有人都承认迫切需要找到更有生产效率的软件开发方法:如今,他们的争论集中于在EJB 3

EJB 3.0+Beehive开发客户反馈系统

设计目标 客户反馈系统作为公司与客户交流的平台,几乎为所有的企业所运用,最近,公司让我负责客户反馈系统的开发.由于,公司与国外客户的业务需要,该系统必须实现中,英,日三国语言的切换(国际化要求).在接到任务之后,我便决定尝试使用目前开源社区比较流行的Apache Beehive(蜂巢)和下一代EJB,EJB3.0等技术来实现这个系统. 开发环境 选择平台,开发工具 为了支持EJB3.0和Beehive,我们选择JBoss4.0.3应用服务器作为运行平台,它也是目前唯一提供EJB3.0容器的应用服

JBuilder2005+JBoss-4.0.2RC1+J2SDK1.5+Log4j 开发Session Bean例解(3)

session 作者:Junsan Jin 日期:2005-3-30 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第三部分:开发Session Bean  新建EJB模块: 选择菜单:New〉Enterprise〉EJB〉EJB Designer,弹出对话框中选择New,选择Create empty EJB Module,点击next,填入名称Trader,一路OK即可.  设计EJB: 1.新建session b

eclipse + JBoss 5 + EJB3开发指南系列文章目录

eclipse + JBoss 5 + EJB3开发指南(15):拦截器方法和拦截器类 eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean eclipse + JBoss 5 + EJB3开发指南(13) eclipse + JBoss 5 + EJB3开发指南(12):使用命名查询执行JPQL eclipse + JBoss 5 + EJB3开发指南(11) eclipse + JBoss 5 + EJB3开发指南(10) eclipse + JBoss 5 +

eclipse + JBoss 5 + EJB3开发指南(13)

在Servlet中访问应用程序管制EntityManager对象 在前面的文章中使用的都是容器管制的EntityManager对象.这类EntityManager对象是由EJB容器创建 的,在这种情况下,EntityManager对象的生命周期完全由EJB容器来管理.在SessionBean中可以使用如 下的代码来通知EJB容器创建EntityManager对象: @PersistenceContext(unitName="myentity") protected EntityMana