??xml version="1.0" encoding="utf-8" standalone="yes"?> 转换WebLogic EJB应用E序
]]>
]]>
预安装Y?
Z配置MySQL数据库的JDBCq接Q需要下载MySQL数据库驱动程序类?
1Q下载MySQL JDBC驱动E序.jar文g
2Q下载和安装MySQL数据库服务器
3Q下载和安装JBoss 4.0应用E序服务?
开发一个Java应用E序Q我们将使用它和XSLT把WebLogic部v文g转换为JBoss部v文g。该部v文g也可以用XSLT工具q行转换?
概述
在不q行修改的时候,W(xu)ebLogic中开发的应用E序是不能部|在JBoss中的。JBoss应用E序的部|文件与WebLogic的部|文件不同。在本文中,我们把一个在WebLogic中开发的实体QentityQEJB应用E序CZq移到JBoss中,q移的方法是把WebLogic部v文g转换为JBoss部v文g?
CZ应用E序包含一个Catalog实体EJB。该EJB的beanc(CatalogBean.javaQ、远E接口(Catalog.javaQ、和home接口QCatalogHome.javaQ都在本文下载链接的weblogic-jboss-resources.zipCZ文g中。我们将使用MySQL开放源代码数据库来配置JBoss应用E序。把WebLogic EJB应用E序部v到JBoss中ƈ不需要修改实体EJBc,只需要修改该EJB的部|文件?
配置JBoss和MySQL
MySQL是一个开放源代码的数据库Q它适合于开放源代码的项目和型l织。ؓ(f)了配|JBoss和MySQL数据库需要进行下面一些修攏V?
配置JBossc\?/strong>
Z使用JBoss 4.0和MySQLQ我们首先要把驱动程序类.jar文gQmysql-connector-java-3.0.9-stable-bin.jarQ复制到QJBossQ?server/default/lib目录中。其中的QJBossQ是JBoss应用E序服务器安装的目录。lib目录?jar?zip文g都包含在JBoss服务器的ClasspathQ类路径Q中?
配置MySQL数据?
Z使用MySQL数据源,需要把QJBossQ?docs/examples/jca/mysql-ds.xml复制刎ͼJBossQ?server/default/deploy目录中。当JBoss服务器启动的时候,deploy目录中的数据源配|文件就被部|好了。依照下面的步骤修改mysql-ds.xml配置文gQ?
· 把<driver-class/Q设|ؓ(f)com.mysql.jdbc.DriverQ<connection-url/Q设|ؓ(f)jdbc:mysql://localhost/QdatabaseQ,其中QdatabaseQ是MySQL数据库。<databaseQ的值可以设|ؓ(f)testQ它是MySQL中的CZ数据库?
· 在jndi-name元素中指定数据源的JNDI名称?
· 指定q接MySQL数据库的用户名和密码。在默认情况下,root用户名不需要密码?
· 把type-mapping元素指定为mySQL。type-mapping元素指定了standardjbosscmp-jdbc.xml部v文g中预定义的数据库cd映射关系。对于MySQL数据库来_(d)cd映射是mySQL?
修改q的mysql-ds.xml如下所C:(x)
Q?xml version="1.0" encoding="UTF-8"?Q?
QdatasourcesQ?
Qlocal-tx-datasourceQ?
Qjndi-nameQMySqlDSQ?jndi-nameQ?
Qconnection-urlQjdbc:mysql://localhost/testQ?connection-urlQ?
Qdriver-classQcom.mysql.jdbc.DriverQ?driver-classQ?
Quser-nameQrootQ?user-nameQ?
QpasswordQ</passwordQ?
QmetadataQ?
Qtype-mappingQmySQLQ?type-mappingQ?
Q?metadataQ?
Q?local-tx-datasourceQ?
Q?datasourcesQ?
我们可以通过提供数据源JNDI名称从数据源获取一个JDBCq接Q?
InitialContext initialContext = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)
initialContext.lookup("java:/MySqlDS");
java.sql.Connection conn = ds.getConnection();
配置d信息
现在我们Ҏ(gu)MySQL数据库设|来修改login-config.xml配置文g。ؓ(f)了登录到MySQL数据库,应用E序{略MySqlDbRealm是必要的。给login-config.xmld下面的<application-policy/Q元素:(x)
Qapplication-policy name = "MySqlDbRealm"Q?
QauthenticationQ?
Qlogin-module code =
"org.jboss.resource.security.ConfiguredIdentityLoginModule"
flag = "required"Q?
Qmodule-option name ="principal"Q</module-optionQ?
Qmodule-option name ="userName"QrootQ?module-optionQ?
Qmodule-option name ="password"Q</module-optionQ?
Qmodule-option name ="managedConnectionFactoryName"Q?
jboss.jca:service=LocalTxCM,name=MySqlDS
Q?module-optionQ?
Q?login-moduleQ?
Q?authenticationQ?
Q?application-policyQ?
通过修改mysql-ds.xml和login-config.xml文gQJBoss 4.0服务器已l被配置好了Q可以用MySQL数据库了。除了前面的一些特定的讄之外Q可能还需要对JBoss部v文g和JBoss JDBC配置文g作一些修攏V?
如果"建立?选项被选中Q通过把jbosscmp-jdbc.xml中的create-table元素讄为trueQ用于部|CMP实体EJBQƈ且MySQL表的主键Q或唯一键)的长度超q了500字节Q应用程序的部vq程?x)在MySQL数据库中生成一个SQL语法错误。对于java.lang.Stringcd的CMP字段Q我们可以通过在standardjbosscmp-jdbc.xml部v文g的mySQLcd映射中把用于Javacdjava.lang.String的SQLcd讄低的VARCHAR值来减小主键Q或唯一键)的长度。另一个可能出现的问题是jbosscmp-jdbc.xml部v文g中的column-name元素。如果某个MySQL表的列名与MySQL保留字相同,在JBoss中部|J2EE应用E序的时候会(x)产生一个错误。解册个问题的Ҏ(gu)是列名与MySQL保留字不同?
在徏立v使用MySQL的JBoss服务器之后,你现在必L该WebLogic EJB应用E序转换为JBoss EJB应用E序Q这涉?qing)到部v文g的修攏VWebLogic实体EJB应用E序由EJB部v文gQejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xmlQ,beanc(CatalogBean.javaQ、远E接口(Catalog.javaQ和home接口QCatalogHome.javaQ组成。ؓ(f)了在WebLogic服务器上部v实体EJBQ需要徏立一个EJB .jar文gQ这个EJB .jar文g的结构如下:(x)
META-INF/
ejb-jar.xml
weblogic-ejb-jar.xml
weblogic-cmp-rdbms-jar.xml
CatalogBean.class
Catalog.class
CatalogHome.class
EJB的结构信息和应用E序汇编信息都在部v文g中指定。结构信息包括说明EJB是对话EJBq是实体EJB。ejb-jar.xml部v文g中的应用E序汇编信息在assembly-descriptor元素中指定。WebLogic中该实体EJB部v文g包括ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml。相应的JBoss部v文g是ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml。这些文件之间的转换如下所C?
ejb-jar.xml部v文g对于WebLogic和JBoss来说都是一L(fng)Q除了multiplicity元素之外。JBoss服务器的ejb-jar.xml中的multiplicity元素需要大写,例如One或ManyQ而不是one或many?
CZ实体EJB的ejb-jar.xml部v文g包含在示例代码中。示例ejb-jar.xml定义了一个叫?Catalog"的实体EJB。这个示例EJB拥有CMP字段catalogId、journal和publisher。其主键字段是catalogId?
把weblogic-ejb-jar.xml转换为jboss.xml
weblogic-ejb-jar.xml和jboss.xml部v文g都是EJB厂商的特定部|文件。ؓ(f)了把WebLogic EJB应用E序部v到JBoss应用E序服务器上Q必Lweblogic-ejb-jar.xml部v文g转换为jboss.xml?
weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。jboss.xml中的根元素是jboss。在jboss.xml和weblogic-ejb-jar.xml部v文g中指定某个EJB的JNDI名称的元素是jndi-name或local-jndi-name。本文中的示例实体EJB的weblogic-ejb-jar.xml部v文g也包含在CZ代码中。weblogic-ejb-jar.xml部v文g的DOCTYPE元素是:(x)
Q?DOCTYPE weblogic-ejb-jar PUBLIC
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" Q?
jboss.xml部v文g的DOCTYPE是:(x)
Q?DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd"Q?
我们通过一个自定义的XSLT样式表jboss.xsltQ包含在CZ代码中)把部|文件weblogic-ejb-jar.xml转换为jboss.xml。该样式表徏立jboss.xmlQ它是与WebLogic的weblogic-ejb-jar.xml部v文g相当的JBoss文g。用jboss.xslt样式表所生成的jboss.xml文g也包含在CZ代码中?
把weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml
weblogic-cmp-rdbms-jar.xml部v文g指定了CMP实体EJB的数据库持箋信息。weblogic-cmp-rdbms-jar.xml文g包含实体EJB的表名称、连接到数据库的数据源和与该实体EJB CMP字段对应的列。示例实体EJB的weblogic-cmp-rdbms-jar.xml部v文g包含在可以下载的.zip文g中。指定CMP视图EJB持箋信息的JBoss部v文g是jbosscmp-jdbc.xml?
weblogic-cmp-rdbms-jar.xml的根元素是weblogic-rdbms-jarQjbosscmp-jdbc.xml的根元素是jbosscmp-jdbc。weblogic-cmp-rdbms-jar.xml文g中指定连接到数据库的数据源的data-source-name元素与jbosscmp-jdbc.xml部v文g中的datasource元素功能相当。weblogic-cmp-rdbms-jar.xml指定实体EJB CMP字段与数据库表的列之间映关pȝfield-map元素与jbosscmp-jdbc.xml中的cmp-field元素功能相当。weblogic-cmp-rdbms-jar.xml中指定列名的dbms-column元素与jbosscmp-jdbc.xml中的column-name元素功能相当。weblogic-cmp-rdbms-jar.xml部v文g的DOCTYPE是:(x)
Q?DOCTYPE weblogic-rdbms-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd'Q?
jbosscmp-jdbc.xml的DOCTYPE是:(x)
Q?DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd"Q?
我们使用自定义的XSLT样式表jbosscmp-jdbc.xsltQ包含在CZ代码中)把部|文件weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml。该样式表徏立jbosscmp-jdbc.xmlQ它是与WebLogic的weblogic-cmp-rdbms-jar.xml部v文g功能相当的JBoss文g。jbosscmp-jdbc.xml也包含下载在.zip文g中?
WebLogic部v文g的DTD与JBoss部v文g的不同。用自定义的XSLT的时候,如果部v文g中还出现了一些额外的元素Q可能还需要做q一步的修改Q可以把WebLogic部v文g转换为JBoss部v文g。在下面的部分中Q我们将在JBoss服务器上部vq个EJB应用E序?
在JBoss中部|该EJB应用E序
把WebLogic EJB部v文g转换为JBoss部v文g之后Q你必须建立一个心的EJB .jar文g以部|到JBoss服务器上。该JBoss .jar文g的结构如下:(x)
META-INF/
ejb-jar.xml
jboss.xml
jbosscmp-jdbc.xml
CatalogBean.class
Catalog.class
CatalogHome.class
~译CZEJBcd接口Q?
java Catalog.java CatalogBean.java CatalogHome.java
把JBoss部v文gejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml复制到META-INF目录中。用jar工具从JBoss部v文g、类和接口中建立一?jar文g?
jar cf CatalogEJB.jar CatalogBean.class
Catalog.class CatalogHome.class META-INF/*.xml
部v该JBoss实体EJB应用E序的过E是Q把?jar文gQEntityEJB.jarQ复制到QJBossQ\server\default\deploy目录Q其中<JBossQ是JBoss安装的目录)中。当服务器启动的时候,该EJB应用E序在JBoss服务器上面部|好了。JBoss应用E序服务器中的部|ԌdeployQ目录与WebLogic应用E序服务器中的应用程序(applicationsQ目录对应?
l论
通过转换部v文g可以把WebLogic中部|的实体EJB应用E序q移到JBoss应用E序服务器上。用相似的步骤Q通过把weblogic.xml 部v文g转换为jboss-web.xml Q也可以把WebLogic J2EE Web应用E序q移到JBoss上?/p>
开发流E,写一个简单的stateful session beanQ进行远E调?计算出某一特定正整数的Fibonacci倹{?br>
所创徏的project下引入jbossall-client.jarQ在JBOSS_HOME/client目录?br>分别用eclipse写出EJBq程调用的home接口Qremote接口和相对应的Bean
——?. home接口——?br>package com.terry.ejbsample;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
/**
* @author terry
*
*/
public interface FibonacciHome extends EJBHome
{
Fibonacci create() throws RemoteException, CreateException;
}
——?. remote 接口——?br>package com.terry.ejbsample;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
* @author terry
*
*/
public interface Fibonacci extends EJBObject
{
public long getFibonacci(int n) throws RemoteException;
}
——?. FibonacciBean——?br>package com.terry.ejbsample;
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* @author terry
*
*/
public class FibonacciBean implements SessionBean
{
public long getFibonacci(int n)
{
if (n==0) return 1;
else if (n==1) return 1;
else
return getFibonacci(n - 1) + getFibonacci(n - 2);
}
public void ejbCreate() throws CreateException
{
System.out.println(“Bean created”);
}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void setSessionContext(SessionContext ctx){}
}
配置相对应的ejb-jar.xml和jboss.xml文g
——?. ejb-jar.xml——?br><?xml version="1.0"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
version="2.1">
<enterprise-beans>
<session>
<ejb-name>Fibonacci</ejb-name>
<home>com.terry.ejbsample.FibonacciHome</home>
<remote>com.terry.ejbsample.Fibonacci</remote>
<ejb-class>com.terry.ejbsample.FibonacciBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
——?. jboss.xml——?br><?xml version="1.0"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Fibonacci</ejb-name>
<jndi-name>FibonacciHome</jndi-name>
</session>
</enterprise-beans>
</jboss>
在Eclipse中配|所需package的jar包,class文g以及(qing)xml描述文g分别dq去Q注意正的前缀Qxml文g必须在根目录下的META-INF文g夹中。或者你可以在consoleH口使用jar命o(h)q行打包Q如 jar cf ff.jar *Q?br>
刚刚打包的ff.jar攑օJBOSS_HOME/server/default/deployQ启动jboss的默认服务器Q如果一切顺利的话,你会(x)在consoleH口中看C刚刚所写的FibonacciBean已经被成功部|到jboss中了?br>
写一个简单的试E序
———FibonacciClient.java——?br>package com.terry.ejbsample;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
/**
* @author terry
*
*/
public class FibonacciClient
{
public static void main(String[] args)
{
try
{
java.util.Properties p = new java.util.Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "localhost:1099");
Context jndiContext = new InitialContext(p);
Object ref = jndiContext.lookup("FibonacciHome");
FibonacciHome home = (FibonacciHome) PortableRemoteObject.narrow(
ref, FibonacciHome.class);
Fibonacci ff = home.create();
long result;
for (int i = 40; i >= 0; i--)
{
result = ff.getFibonacci(i);
System.out.println("Fibonacci of" + i + " is " + result);
}
} catch (java.rmi.RemoteException re)
{
re.printStackTrace();
} catch (Throwable t)
{
t.printStackTrace();
}
}
}
解析此例
J2EE应用说白了其实原理也很简单,J2EE是分布式pȝQ意味着server与client是通过RMI-IIOP和JNDIq行交互的。简单来说就是提供给client一U可以远E调用server端程序的Ҏ(gu)Q当然其中的l节?x)比较复杂,不过q些都是你深入之后才?x)接触到的东ѝ?
本文CZQ客L(fng)通过JNDI利用Home接口创徏Z个Remote objectQ再通过调用Remote object 中的Ҏ(gu)与FibonacciBeanq行交互Q处理逻辑。客L(fng)q不是直接与Beanq行交互?br>E序中的ejb-jar.xml是用来描qEJB属性的Qjboss.xml是用来定义ejb-jar.xml中Bean所对应的JNDI信息?!-- google_ad_section_end -->
]]>MyEclipse默认的应用服务器为JBoss3Q这里我们用WebLogic8.1。启动EclipseQ选择“H口\首选项”菜单Q打开首选项对话框。展开MyEclipse下的Application Serversl点Q点击JBoss 3Q选中右面的Disable单选按钮,停用JBoss 3。然后点击WebLogic 8Q选中双的Enable单选按钮,启用WebLogic服务器。同时下面的配置如下Q?nbsp;
(1)BEA home directoryQE:\BEA
(2)WebLogic installation directoryQE:\BEA\weblogic81
(3)Admin usernameQadmin
(4)Admin passwordQ?/span>12345678
(5)Execution domain rootQE:\bea\user_projects\domains\mydomain
(6)Execution domain nameQmydomain
(7)Execution server nameQmyserver
(8)Hostname:PortNumberQlocalhost:7001?nbsp;
(9)Security policy fileQE:\bea\weblogic81\server\lib\weblogic.policy
(10)JAAS login configuration fileQ省略?nbsp;
接着展开WebLogic 8l点Q点击JDKQ在双的WLS JDK name处选择WebLogic 8的默认JDK。这里组合框中缺省ؓ(f)j2re1.4.2_03Q即之前单独安装的jre。单击Add按钮Q弹出WebLogic > Add JVM对话框,在JRE名称处随便输入一个名字,如jre1.4.1_02。然后在JREȝ录处选择WebLogic安装文g夹中的JDK文g夹,如E:\BEA\jdk141_02Q程序会(x)自动填充Javadoc URL文本框和JREpȝ库列表框。单ȝ定按钮关闭对话框。这时候就可以在WLS JDK namel合框中选择jre1.4.1_02了。之后还要在下面的Optional Java VM argumentsQ如-ms64m -mx64m -Djava.library.path="E:/BEA/weblogic81/server/bin" -Dweblogic.management.discover=false -Dweblogic.ProductionModeEnabled=false
最后点击PathsQ在双的Prepend to classpath列表框中Q通过Add JAR/ZIP按钮Q加入D:\BEA\weblogic81\server\lib\weblogic.jar、D:\BEA\weblogic81\server\lib\webservices.jar?nbsp;
如果用到数据库,q需把数据库的驱动类库加q来Q这里我们用WebLogic自带的SQL Server数据库驱动库D:\BEA\weblogic81\server\lib\mssqlserver4v65.jar?nbsp;
(注意:是否所有服务器如tomcat,weblogic,在编译jspE序时?若涉?qing)到数据库编E?都需要在配置eclipse中的服务器时候加入到c\径中?/span>?)
xQMyEclipse中WebLogic8的配|工作就完成了。下面可以看看在Eclipse中能否启动WebLogic了?自从安装了MyEclipse之后QEclipse工具栏中׃(x)有一个Run/Stop Servers下拉按钮。点击该按钮的下拉部分,选择“WebLogic 8\Start”菜单Q即开始启动WebLogic了。通过查看下面的控制台消息Q就可以知道启动是否成功Q或有什么异常发生。停止WebLogic可选择“WebLogic\Stop”菜单?br>
]]>
Appliction 是用来作?J2EE 部v时用的?/span>
EJB 是创徏 EJB lg?/span>
Web 是一?Web 服务的容器,包括 HTML、JSP、Servlet、Struts {?/span>
?MyEclipse 中?EJB 的两U方法:(x)
①选择 J2EE 1.3 则可以通过 xDoclet 来根?App_Bean 来生?App、Home、Session、Apputil {?/span>
②选择 J2EE 1.4 的话需要自己写 App、Home、Session {程序代码?/span>对于整个E序以后的运行过E都是以 JNDI ZU的展开Q要注意Q?/span>
A.一般要?Home 中的 JNDI-Name 为标准,具体在?xDoclet ?J2EE 1.3 时参看相关的帮助?/span>
B.配置主要?weblogic-ejb-jar.xml ?ejb-jar.xml ?JNDI 的设|(q一般是针对于在同一服务器内部的 JNDI 的调用,而对于其他外部情况,需要设|?Ervirament 权限{问题后才能q行 LookupQ?/span>
׃在服务器{各斚w的原因,在部|之前要注意几个配置文g的正的位置Q?/span>
A.weblogic-ejb-jar.xml ?ejb-jar.xml 要在 XXXEJB/src/meta-inf 下,可以通过在不同的目录下导入?/span>
B.web.xml ?weblogic.xml 要在 XXXWeb/webRoot/web-inf 下,可以 weblogic.xml 直接用别的程序的Qweb.xml 需要自己根据需要来配置?br>
最后在部v之前Q要Ҏ(gu)?Application Server 的三进行项目清理,然后部v到服务器上?/span>
]]>MyEclipse+Weblogic开发EJB
MyEclipse+Weblogic开发EJB
~写人:(x)邬文?br>
~写旉Q?/span>2005-11-14
联系邮g:wenjunwu430@gmail.com
前言
学习(fn)ejb也有D|子了Q一直没有找到好的资料指导如何在myeclipse下面开发ejbQo(h)我十分苦恹{经q查阅资料和阅读myeclipse自带帮助Qȝ文档Q希望该文档能够让大家迅速上手用MyEclipse开发EJBlg,做ؓ(f)我们l的培训资料。如果中间有不或错误请补充U正Q谢谢?br>
1 安装myeclipse,weblogic
1. 下蝲安装eclipse 3.0版本Q具体版本根据所下蝲的myeclipse版本要求Q见www.myeclipsesite.comQ?br>
2. 下蝲myeclipse3.8安装文gQ运行安装,需要设|eclipse的安装目录。或者下载解压包Q将文g夹解压到eclipse安装文g夹plugins目录Q安装方法同普通插件安装相同?br>
3. 安装Weblogic 8.1.q行安装E序卛_。具体配|本文不再描qͼ认ؓ(f)读者已l配|好weblogic的domain?br>
2 配置weblogic
配置服务器以后可以通过myeclipse启动停止weblogic?br>
注:(x)以下资料转自http://dev2dev.bea.com.cn/bbs,作?newwei
1) 选择菜单Window->Preferences->MyEclipse->Application Servers->Weblogic 8Q配|项目如下:(x)
1. BEA home directory: 选择Bea的安装目?br>
2. Weblogic installation directory:现在BEA下面的weblogic81目录
3. Admin username:输入上面在配|过E中讄用户?br>
4. Admin password:输入刚才讄密码
5. Execution domain root:选择BEA下user_projects\domains目录下上面第一步创建的目录
6. Execution domain name:输入上面那个目录的名U?br>
7. Execution server name:输入上一步的那个Congfiguration Name
8. Hostname:PortNumber:输入IP地址和监听的端口
9. Security policy file:输入BEA安装目录下的\weblogic81\server\lib\weblogic.policy
2) 在Weblogic 8下面配置JDKQ在WLS JDK name那里选择新徏Q弹出的对话框中选择BEA下面的JDK安装路径Q输入一个名字确定就可以Q在Optional Java VM arguments对话框里面输?/span>-ms64m -mx64m -Djava.library.path="D:/BEA/weblogic81/server/bin" -Dweblogic.management.discover=false -Dweblogic.ProductionModeEnabled=false
3) 在Weblogic 8下面配置PathsQ加入BEA安装路径?/span>/weblogic81/server/lib中的webservices.jar和weblogic.jar两个包。如果需要其他的包,也在q里加入?br>
3 创徏W一个EJB工程
1. File > New > Project.
2. 选择J2EE目录?nbsp;EJB Projec
3. 选择 Next >.
输入工程名称Q这里是firsejb
如果要用XDoclet工具Q选择J2EE 1.3。(使用QXDoclet是自动生成代码和部v描述文g的工P
选择FinishQ目录结构入图?br>
4 创徏W一个stateless sessionbean
1. ȝ面选择菜单File > New > OtherQ打开新徏向导?br>
2. 展开J2EE > EJB 文g夹,选择Session EJB?br>
3. 选择Next>Q界面如下。这里要注意Qpackage?ejb后缀Q因为XDoclet工具默认ejb bean所在的文g夹以.ejb后缀Q接口文件的文g夹以.interface为后~Qؓ(f)了避免设|上的麻烦,按默认情况取名。当然你也可以通过讄XDoclet属性改变,详情h看帮助文档?br>
4. 选择Finish
5. 用XDoclet自动生成接口文g、部|描q文?br>
XDoclet可以加速EJB的开发,自动完成一些文件生成工作,q方面和JBuilder是类似的?br>
我们需要XDoclet生成的文件如下:(x)
接口文gQ远E接口、本地接口、Home接口、本地Home接口Q文件作用参考《精通EJB》)
部v文gQejb-jar.xmlQ标准ejb部v描述文gQ、weblogic-ejb-jar.xml文g(weblogic部vejb描述文gQ不同服务器该文件不同,要特别注意,该文件是必需的,通常由工兯动生?
5.1. 为工E配|XDoclet
1. 打开工程的propertiesH口。选择菜单Properties > MyEclipse-XDoclet?br>
2. Add Standard
3. 选择Standard EJB?br>
4. L没有用的标签Q保留需要的如下图(见myeclipse帮助myeclipse application developer guide->ejb development->figure 11Q?br>
5. 在build选项卡中选择 Use dynamic build specification
以上配置可以生成一个标准stateless bean的所有接口和配置文gQ但是要部v该beanQ还~Z个服务器部v描述文gweblogic-ejb-jar.xml?br>
5.2. 为服务器配置XDoclet
该配|是Z自动生成weblogic-ejb-jar.xml文g?br>
叛_ejbdoclet 选择 Add ?br>
我这里用的是weblogic8.1Q所以选择weblogic。设|属性destDir = src/META-INF?br>
5.3. q行XDoclet生成文g
在工E上右键MyEclipse->Run XDoclet
生成前后工程目录应该cM为:(x)
Jboss.xml应该为weblogic-ejb-jar.xml?br>
查看weblogic-ejb-jar.xml文gQ可以知道Home接口的JNDI名称?br>
5.4. 部vEJB
1. MyEclipse >Add and Remove Project Deployments
2. 点击addQ添加部|服务器weblogic?br>
]]>
如下
1
.beanc?br />
2
.接口
3
.XML部v描述文g
4
.ejb
-
jar
5
.部v
]]>
企业Bean实例 企业BeancȝJava对象实例Q他含有本地或远E接口中定义Ҏ(gu)的实C业务逻辑使用。企业Bean不具备网l能力?/p>
q程接口 含有企业BeancL露的业务Ҏ(gu){Q是一Java接口。在EJB开发模型中Q客户代码L同本地接口或q程接口交互Q从不直接与企业Bean实例交互。远E接口遵守Java RMI-IIOP 定义的规则,所以具有网l功能?/p>
本地接口 q程接口的高性能版本Q当客户调用的企业Beanlg与客户处在统一JVM中)。用本地接口访问EJBQ不要经q存根,骨架Q网l调用,参数的marshal和demarshal{操作?/p>
EJB对象 容器生成的远E接口实现?它处于客户与企业Bean的实例之_(d)嫩构处理中间件相关问题,而且它还h|络功能?/p>
本地对象 EBJ对象的高性能版本
Home 接口 EJB对象的工厂。它是Java接口Qؓ(f)获得EJB对象Q客户必M用Home接口。由于客戯够跨网l用Home接口Q因此它h|络功能?/p>
Home对象 容器生成的Home接口实现。Home对象也具有网l功能,q守RMI-IIOP规则?/p>