|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉, 本文经由过程复杂例子,形貌怎样使用EJB开辟、部署和运转一个客户机/服务器使用。例子的客户端作为Java自力使用运转,由ConverterClient.java类完成。它完成一个复杂的及时会话,次要经由过程客户端使用挪用服务器端EJB类ConverterEJB.java来完成。假如你已安装了J2EE,则能够在doc/guides/ejb/examples/converter目次中找到这些例子。
为了完成本文所形貌的复杂例子,你必要完成以下义务:
·编写和编译EJB程序
·创立J2EE使用
·打包EJB(.jar)
·部署J2EE使用
·编写和编译客户端程序
·运转客户端
上面章节我们迁就上述事情义务和所触及的常识点举行复杂论述。
条件
完成本文供应例子的条件是您安装了Javasoft.com或相干操纵体系厂商网站下载的J2SESDK,和安装了响应操纵体系版本的J2EESDK(www.javasoft.com下载)并举行了准确设置。关于J2SE和J2EE的安装、设置和别的进一步信息,请参阅产物相干文档。
EJB编码
每一个EJB程序必需请求编写下述代码:
·远程接口(Remoteinterface)
·当地接口(Homeinterface)
·完成组件(Enterprisebeanclass)
远程接口编码
远程接口界说了客户端可以挪用的贸易办法,这些贸易办法是有服务器真个企业组件完成的,本文所触及的Converter.java编码以下:
importjavax.ejb.EJBObject;//引进必需的包
importjava.rmi.RemoteException;
publicinterfaceConverterextendsEJBObject{//必需承继EJBObject类
/*界说客户端能够挪用的办法*/
publicdoubledollarToYen(doubledollars)throwsRemoteException;
publicdoubleyenToEuro(doubleyen)throwsRemoteException;
}
当地接口编码
当地接口界说了员徐客户端创立、查找或挪动EJB的办法,本文所触及的当地接口类ConverterHome接口只界说了一个create办法,前往远程接口范例,编码以下:
importjava.io.Serializable;
importjava.rmi.RemoteException;
importjavax.ejb.CreateException;
importjavax.ejb.EJBHome;
publicinterfaceConverterHomeextendsEJBHome{
Convertercreate()throwsRemoteException,CreateException;
}
企业组件类(EJB)编码
本文中的企业组件(EJB)是一个无形态会话组件,定名为ConverterEJB.java,该组件完成了两个贸易办法:dollarToYen和yenToEuro,与远程接口Converter所界说客户端可会见办法分歧,该类编码以下:
importjava.rmi.RemoteException;
importjavax.ejb.SessionBean;
importjavax.ejb.SessionContext;
publicclassConverterEJBimplementsSessionBean{
publicdoubledollarToYen(doubledollars){
returndollars*121.6000;
}
publicdoubleyenToEuro(doubleyen){
returnyen*0.0077;
}
publicConverterEJB(){}
publicvoidejbCreate(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextsc){}
}
编译EJB
如今必要对上述三个类举行编译,在UNIX平台和NT/9X平台上的编译略有区分,分离以下编译:
UNIX:
1.鄙人面的剧本compileEJB.sh中,将该成实践J2EE安装目次。
#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar
javac-classpath"$CPATH"ConverterEJB.javaConverterHome.javaConverter.java
2.运转compileEJB.sh剧本
Windows:
1.鄙人面的compileEJB.bat批处置文件中,将该为实践J2EE安装目次。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar
javac-classpath%CPATH%ConverterEJB.javaConverterHome.javaConverter.java
2.运转批处置文件compileEJB.bat。
创立J2EE使用
你不克不及够间接将企业组件(EJB)部署到J2EE服务器,必需将组件加到一个J2EE使用中然后再部署。在本节,你将创立一个叫做ConverterApp的新J2EE使用并保留为ConverterApp.ear。
1.在命令行提醒符下启动J2EE服务器:
j2ee?verbose
(中断服务器命令j2ee-stop.)
2.在另外一个终端窗口运转部署工具:
deploytool
(按F1猎取部署工具匡助)
3.创立新的J2EE使用
a.在部署工具当选择“文件”菜单
b.从“文件”菜单当选择“新使用”
c.点击扫瞄
d.在文件选择框中定位寄存.ear文件的目次
e.文件定名为ConverterApp.ear.
f.点击“新使用”
g.点击“断定”
企业组件(EJB)打包
本部分你将运转部署工具的创立EJB导游来完成下述义务:
·创立组件部署形貌符
·将形貌符和组件类打包为.jar文件
·将EJB.jar文件打包到J2EE使用ConverterApp.ear文件
从“文件”菜单当选择创立EJB来入手下手创立新的EJB,这个导游将显现上面的对话框:
先容对话框:
a.浏览导游特征申明文档
b.点击“下一步”
EJBJAR对话框:
a.在标有"EnterpriseBeanwillgoin,"的组合框当选择ConverterApp.
b.在JARDisplayName域输出ConverterJAR,声明EJB.jar文件包括该组件,该名字会在树形使用布局中出现。
c.点击增添内容文本域
d.在内容编纂对话框顶部,输出包括.class文件的目次
e.选择该目次下相干.class到场:Converter.class,ConverterEJB.class,和ConverterHome.class.
f.点击断定
g.点击下一步
综合对话框:
a.在组件范例当选择“会话”
b.选择“无形态”
b.在EJB类组合框当选择ConverterEJB.
c.在当地接口组合框当选择ConverterHome.
d.在远程接口组合框当选择Converter.
e.在企业组件定名域中输出ConverterBean.
f.点击下一步
情况出口对话框:
由于你能够跳事后面的对话框,以是能够点击完成停止创立EJB使用义务。
部署J2EE使用
如今J2EE使用中已包括企业组件(EJB)了,能够对其举行部署。
1.指定企业组件的JNDI名字
a.在使用部署波农工具中,在使用树形布局当选择ConverterApp
b.选择JNDI名字标签
c.在JNDI名字域中,输出MyConverter并确认。客户端将利用该名字来定位当地接口。
2.部署J2EE使用
a.从工具菜单当选择“部署”
b.在第一个对话框当选择ConverterApp为部署对象,Localhost为方针服务器
c.选择标有"ReturnClientJar."的选择框
d.在文本域中敲进ConverterAppClient.jar切实其实切目次,如J2EE的例子目次doc/guides/ejb/examples/converter
e.点击下一步
f.在第二个对话框中,核实ConverterBean的JNDI定名为MyConverter.
g.点击下一步
h.在第三个对话框中点击停止
i.在部署历程对话框中,点击OK完成部署
开辟客户端
客户端程序ConverterClient是一个自力运转的Java使用,创立ConverterClient次要包含以下步骤:
1.客户端编码
2.客户端编译
客户端编码
ConverterClient.java源码展现了EJB客户端最基础的义务完成,即:
·定位当地接口
·创立企业组件(EJB)
·挪用贸易办法
定位当地接口
ConverterHome接口界说了EJB声明周期办法如create,在中ConverterClient能够挪用create办法之前ConverterHome对象必需被实例化,包含三个步骤:
1.创立JNDI定名高低文
Contextinitial=newInitialContext();
2.查找与JNDI定名MyConverter绑定的对象
java.lang.Objectobjref=initial.lookup("MyConverter");
3.限制指向ConverterHome对象的参考
ConverterHomehome=
(ConverterHome)PortableRemoteObject.narrow(objref,
ConverterHome.class);
创立企业组件(EJB)实例
客户端经由过程挪用当地接口ConvertHome对象的create办法创立ConverterEJB类对象,create办法前往组件Converter范例的对象。然后,远程办法界说的在ConverterEJB完成的贸易办法能够被客户端挪用。当客户端挪用create办法时,EJB容器将实例化ConverterEJB,然后挪用ConverterEJB.ejbCreate办法。
ConvertercurrencyConverter=home.create();
挪用贸易办法
完成上述义务后,挪用贸易办法就对照复杂了。你挪用Converter对象的办法,EJB容器将响应的挪用运转在J2EE服务器中的ConverterEJB实例的办法。客户端挪用贸易办法dollarToYen的代码以下:
doubleamount=currencyConverter.dollarToYen(100.00);
ConverterClient源码
上面是ConverterClient.java的完全源码:
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.rmi.PortableRemoteObject;
importConverter;
importConverterHome;
publicclassConverterClient{
publicstaticvoidmain(String[]args){
try{
Contextinitial=newInitialContext();
Objectobjref=initial.lookup("MyConverter");
ConverterHomehome=
(ConverterHome)PortableRemoteObject.narrow(objref,
ConverterHome.class);
ConvertercurrencyConverter=home.create();
doubleamount=currencyConverter.dollarToYen(100.00);
System.out.println(String.valueOf(amount));
amount=currencyConverter.yenToEuro(100.00);
System.out.println(String.valueOf(amount));
currencyConverter.remove();
}catch(Exceptionex){
System.err.println("Caughtanunexpectedexception!");
ex.printStackTrace();
}
}
}
编译客户端代码
UNIX:
1.鄙人面剧本compileClient.sh,对依据J2EE实践安装目次作响应修改。
#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar
javac-classpath"$CPATH"ConverterClient.java
2.运转剧本文件compileClient.sh
Windows:
1.鄙人面批处置文件compileClient.bat中,对依据实践J2EE安装目次举行修正。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar
javac-classpath%CPATH%ConverterClient.java
2.运转批处置文件compileClient.bat
运转客户端
运转客户端你必要ConverterAppClient.jar文件,该文件包括同意客户端与EJB容器中EJB实例通讯所需的存根类,ConverterAppClient.jar文件在部署J2EE使用过程当中创立。
UNIX:
1.鄙人面剧本testClient.sh,对依据J2EE实践安装目次作响应修改。
#!/bin/sh
J2EE_HOME=
CPATH=$J2EE_HOME/lib/j2ee.jar:ConverterAppClient.jar:.
java-classpath"$CPATH"ConverterClient
2.运转剧本文件testClient.sh
Windows:
1.鄙人面批处置文件testClient.bat中,对依据实践J2EE安装目次举行修正。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar;ConverterAppClient.jar
java-classpath"%CPATH%"ConverterClient
2.运转批处置文件testClient.bat
罕见成绩处置
当运转ConverterClient时发明上面毛病:
1.java.lang.ClassCastException
大概没法找到ConverterAppClient.jar文件。
2.java.lang.NoClassDefFoundError:ConverterClient
没法定位ConverterClient.class文件。
3.java.lang.NoClassDefFoundError:javax/naming/Context
没法找到所需的j2ee.jar文件,确认CLASSPATH设置。
4.javax.naming.NameNotFoundException:LookupofnameMyConverterfailed.
J2EE服务器没法定位JNDI名字MyConverter所绑定的组件。
5.javax.naming.NamingException:Erroraccessingrepository:CannotconnecttoORBat....
J2EE服务器没有运转。
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发 |
|