分享
 
 
 

开发SessionBean

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

分以下几个步骤:

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\server\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\server\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\server\lib\下。例如,如果你的weblogic安装在C盘,那么你的jar应该如此设置:

<property name="j2eelib" value="C: \bea\weblogic81\server\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。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有