论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
WebLogic的研究之-开发、部署EJB(1)
 作者:佚名     2007-3-14 16:43:17        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

这里不会讨论EJB的概念,只讨论如何编写一个简单EJB,部署EJB,Weblogic与JBuilder的整合,本文先把介绍仅用文本编辑器编写一个最简单的EJB所需要的一切,以让大家一览EJB的概貌,然后才介绍如何把Weblogic与JBuilder整合起来,使用JBuilder开发Weblogic的EJB,我相信这样会得到很好的学习效果,因为这是我学习的路径,当然我会把我遇到的问题告诉大家,以免大家走弯路。

下面是一个最简单的EJB所需要的代码及XML说明,手工制作EJB的JAR包比较麻烦,在WIN2000下,我仿照例子制作了一个 build.cmd 批处理文件

weblogic-ejb-jar.xml
&lt ?xml version="1.0"? &gt

&lt !DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd' &gt

&lt weblogic-ejb-jar &gt
&lt weblogic-enterprise-bean &gt
&lt ejb-name &gtHelloWorldBean&lt /ejb-name &gt
&lt caching-descriptor &gt
&lt max-beans-in-free-pool &gt100&lt /max-beans-in-free-pool &gt
&lt /caching-descriptor &gt
&lt jndi-name &gthello.HelloWorld&lt /jndi-name &gt
&lt /weblogic-enterprise-bean &gt
&lt /weblogic-ejb-jar


--------------------------------------------------------------------------------
ejb-jar.xml
&lt ?xml version="1.0" encoding="GBK"? &gt
&lt !DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd' &gt

&lt ejb-jar &gt
&lt enterprise-beans &gt
&lt session &gt
&lt ejb-name &gtHelloWorldBean&lt /ejb-name &gt
&lt home &gthello.HelloWorldHome&lt /home &gt
&lt remote &gthello.HelloWorld&lt /remote &gt
&lt ejb-class &gthello.HelloWorldBean&lt /ejb-class &gt
&lt session-type &gtStateless&lt /session-type &gt
&lt transaction-type &gtContainer&lt /transaction-type &gt
&lt /session &gt
&lt /enterprise-beans &gt
&lt assembly-descriptor &gt
&lt container-transaction &gt
&lt method &gt
&lt ejb-name &gtHelloWorldBean&lt /ejb-name &gt
&lt method-name &gt*&lt /method-name &gt
&lt /method &gt
&lt trans-attribute &gtRequired&lt /trans-attribute &gt
&lt /container-transaction &gt
&lt /assembly-descriptor &gt
&lt /ejb-jar &gt

 

--------------------------------------------------------------------------------
package hello;
import java.rmi.*;
import javax.ejb.*;

public class HelloWorldBean implements SessionBean {
private SessionContext sessionContext;
public void ejbCreate() {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext context) {
sessionContext = context;
}
public String getHelloWorld(){
return "Hello World!";
}
}


--------------------------------------------------------------------------------
HelloWorld.java
package hello;
import java.rmi.*;
import javax.ejb.*;

public interface HelloWorld extends EJBObject {
public java.lang.String getHelloWorld() throws RemoteException;
}

 

--------------------------------------------------------------------------------
HelloWorldHome.java
package hello;
import java.rmi.*;
import javax.ejb.*;

public interface HelloWorldHome extends EJBHome {
public HelloWorld create() throws RemoteException, CreateException;
}


--------------------------------------------------------------------------------

HelloWorldBean.java
package hello;
import java.rmi.*;
import javax.ejb.*;

public class HelloWorldBean implements SessionBean {
private SessionContext sessionContext;
public void ejbCreate() {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext context) {
sessionContext = context;
}
public String getHelloWorld(){
return "Hello World!";
}
}


--------------------------------------------------------------------------------

HelloWorldBeanClient1.java
package hello;

import javax.naming.*;
import javax.rmi.PortableRemoteObject;

public class HelloWorldBeanClient1 {
private static final String ERROR_NULL_REMOTE = "Remote interface reference is null. It must be created by calling one of the Home interface methods first.";
private static final int MAX_OUTPUT_LINE_LENGTH = 50;
private boolean logging = true;
private HelloWorldHome helloWorldHome = null;
private HelloWorld helloWorld = null;

/**Construct the EJB test client*/
public HelloWorldBeanClient1() {
long startTime = 0;
if (logging) {
log("Initializing bean access.");
startTime = System.currentTimeMillis();
}

try {
//get naming context
Context ctx = new InitialContext();

//look up jndi name
Object ref = ctx.lookup("HelloWorld");

//cast to Home interface
helloWorldHome = (HelloWorldHome) PortableRemoteObject.narrow(ref, HelloWorldHome.class);
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded initializing bean access.");
log("Execution time: " + (endTime - startTime) + " ms.");
}

HelloWorld hello=helloWorldHome.create();
String str=hello.getHelloWorld();
System.out.println(str);
}
catch(Exception e) {
if (logging) {
log("Failed initializing bean access.");
}
e.printStackTrace();
}
}

//----------------------------------------------------------------------------
// Methods that use Home interface methods to generate a Remote interface reference
//----------------------------------------------------------------------------

public HelloWorld create() {
long startTime = 0;
if (logging) {
log("Calling create()");
startTime = System.currentTimeMillis();
}
try {
helloWorld = helloWorldHome.create();
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded: create()");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed: create()");
}
e.printStackTrace();
}

if (logging) {
log("Return value from create(): " + helloWorld + ".");
}
return helloWorld;
}

//----------------------------------------------------------------------------
// Methods that use Remote interface methods to access data through the bean
//----------------------------------------------------------------------------

public String getHelloWorld() {
String returnValue = "";
if (helloWorld == null) {
System.out.println("Error in getHelloWorld(): " + ERROR_NULL_REMOTE);
return returnValue;
}
long startTime = 0;
if (logging) {
log("Calling getHelloWorld()");
startTime = System.currentTimeMillis();
}

try {
returnValue = helloWorld.getHelloWorld();
if (logging) {
long endTime = System.currentTimeMillis();
log("Succeeded: getHelloWorld()");
log("Execution time: " + (endTime - startTime) + " ms.");
}
}
catch(Exception e) {
if (logging) {
log("Failed: getHelloWorld()");
}
e.printStackTrace();
}

if (logging) {
log("Return value from getHelloWorld(): " + returnValue + ".");
}
return returnValue;
}

//----------------------------------------------------------------------------
// Utility Methods
//----------------------------------------------------------------------------

private void log(String message) {
if (message.length()  &gt MAX_OUTPUT_LINE_LENGTH) {
System.out.println("-- " + message.substring(0, MAX_OUTPUT_LINE_LENGTH) + " ...");
}
else {
System.out.println("-- " + message);
}
}
/**Main method*/

public static void main(String[] args) {
HelloWorldBeanClient1 client = new HelloWorldBeanClient1();
// Use the client object to call one of the Home interface wrappers
// above, to create a Remote interface reference to the bean.
// If the return value is of the Remote interface type, you can use it
// to access the remote interface methods. You can also just use the
// client object to call the Remote interface wrappers.
}
}

 

--------------------------------------------------------------------------------

build.cmd

if "" == "%JAVA_HOME%" set JAVA_HOME=java
if "" == "%WL_HOME%" set WL_HOME=weblogic
set MYSERVER=%WL_HOME%myserver
set MYCLASSPATH=%JAVA_HOME%libclasses.zip;%WL_HOME%classes;%WL_HOME%libweblogicaux.jar;%MYSERVER%clientclasses

@REM Create the build directory, and copy the deployment descriptors into it
mkdir build buildMETA-INF
copy *.xml buildMETA-INF

@REM Compile ejb classes into the build directory (jar preparation)
javac -d build -classpath %MYCLASSPATH% HelloWorld.java HelloWorldHome.java HelloWorldBean.java

@REM Make a standard ejb jar file, including XML deployment descriptors
cd build
jar cv0f std_ejb_HelloWorld.jar META-INF hello
cd ..

@REM Run ejbc to create the deployable jar file
java -classpath %MYCLASSPATH% -Dweblogic.home=%WL_HOME% weblogic.ejbc -compiler javac buildstd_ejb_HelloWorld.jar %MYSERVER%ejb_Hello.jar

@REM Compile ejb interfaces & client app into the clientclasses directory
javac -d %MYSERVER%clientclasses -classpath %MYCLASSPATH% HelloWorld.java HelloWorldHome.java HelloWorldBeanClient1.java


责任编辑:lss
  相关新闻
JSFToolbox--用Dreamweaver开发JSF
WebWork拦截器(Interceptor)使用方法
获得CCIEBS认证,成为IEBS证书持有者有什么利益
允许内部用户使用Outlook Web Access
欧盟同意甲骨文58.5亿美元收购Siebel
反流氓软件走向web2.0 奇虎将判定权移交网民
Web2.0时代的核心应用:Ajax简介
EasyJWeb 关于中文件上传的处理实例
Thinking in AJAX(二) —— WEB设计
MCDBA 数据库设计学习BLOG
MCDBA 数据库设计学习BLOG
欧盟同意甲骨文58.5亿美元收购Siebel
获得CCIEBS认证,成为IEBS证书持有者有什么利益
反流氓软件走向web2.0 奇虎将判定权移交网民
比较 RIFE 与其他 Web Frameworks
EasyJWeb 关于中文件上传的处理实例
Web框架趣谈之Java Web 框架的甜点
Web2.0时代的核心应用:Ajax简介
Thinking in AJAX(二) —— WEB设计
XMLHttpRequest在Web开发利弊
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号