在Jboss下WebService调用EJB.docx
- 文档编号:6998960
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:53
- 大小:337.84KB
在Jboss下WebService调用EJB.docx
《在Jboss下WebService调用EJB.docx》由会员分享,可在线阅读,更多相关《在Jboss下WebService调用EJB.docx(53页珍藏版)》请在冰豆网上搜索。
在Jboss下WebService调用EJB
Jboss下开发webservice
环境要求:
os:
w2k;
eclipse:
3.12;
jboss:
4.03
jws:
1.6
开发步骤:
1.在ECLIPSE中新建项目
2.新建接口(IHelloService.java)
packagecom.yulinlin.webservice.interfaces;
importjava.rmi.Remote;
importjava.rmi.RemoteException;
publicinterfaceIHelloServiceextendsRemote{
StringhelloWord(Stringname)throwsRemoteException;
}
3.实现接口(HelloService.java)
packagecom.yulinlin.webservice;
importjava.rmi.RemoteException;
importcom.yulinlin.webservice.interfaces.IHelloService;
publicclassHelloServiceimplementsIHelloService{
publicStringhelloWord(Stringname)throwsRemoteException{
return"Hello:
"+name;
}
}
4,编写server-config.xml
xmlversion="1.0"?
>
com.syni.ibc.web.valueobject"packageName="com.yulinlin.webservice.interfaces"> 5.使用wscompile编译,为了方便,我写了一个ANT脚本文件 xmlversion="1.0"encoding="UTF-8"? > \Sun\jwsdp-1.6\jaxrpc\bin\wscompile.bat"/> server"/> 6,编写webservices.xml xmlversion="1.0"? > xsi="http: //www.w3.org/2001/XMLSchema-instance"xsi: schemaLocation="version="1.0"> 7,在web.xml中增加 8,打包发布 欢迎讨论使用axis2开发webService JBoss4_0中使用WEBService大致过程 1.安装Jboss 2.将webserviceendpoint当成servlet 3.写一个远端的interface 4.在eclipse中配置一个externaltool: wscompile 4.写一个config.xml,然后用JWSDP的JAXRPC中的wscompile生成mapping.xml和wsdl 5.必须存在4个文件: web.xml,webservices.xml,mapping.xml和.wsdl 6.webservices中的portname要和.wsdl中的一致 7.使用lomboz或jbossIDEdeploy 详细实例: 1.createaclass packageservice; publicclassHello{ publicbooleanhelloDancy(Stringhello){ System.out.println(hello); returntrue; } } 2.createcorrespondingremoteinterface packageremote; importjava.rmi.Remote; importjava.rmi.RemoteException; publicinterfaceHelloRemoteextendsRemote{ publicbooleanhelloDancy(Stringhello)throwsRemoteException; } 3.createweb.xmlinWEB-INFfolder xmlversion="1.0"encoding="UTF-8"? > xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" 4.createconfig.xml xmlversion="1.0"encoding="UTF-8"? > targetNamespace="/hello" typeNamespace="/hello/types" packageName="service"> 5.createfolderwsdlinWEB-INF/andrunwscompilefromjaxrpcfolderinsun'sjwsdp1.5package wscompile-cpoutput/classes-gen: server-f: documentliteral-mappingjaxrpc-mapping.xml-keepconfig.xml -keep: keepthegeneratedsourcefile 6.Afterexecutingwscompile.bat,amapping.xmlandhelloservice.wsdlaregenerated 7.createwebservice.xml xmlversion="1.0"encoding="UTF-8"? > xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation="version="1.1"> 8.createhello.waranddeployittojboss4.0.1 9.createtestclient publicvoidtestHelloDancy(){ try{ Stringurlstr ="http: //w20251-01: 8080/hellows/hello? wsdl"; .URLurl= new.URL(urlstr); Stringns ="/hello"; QName qname =newQName(ns,"Helloservice"); QName port =newQName(ns,"HelloRemotePort"); QName operation=newQName(ns,"helloDancy"); Serviceservice=newService(); Callcall =(Call)service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(operation); call.addParameter("String_1",XMLType.XSD_BASE64,ParameterMode.IN); call.setReturnType(XMLType.XSD_BOOLEAN); Booleanret=(Boolean)call.invoke(newObject[]{"hello,Dancy".getBytes()}); }catch(Exceptione){ e.printStackTrace(); } } 10.settheclasspathtoleadtojarsinaxis'slibfolder 11.customizedobjectwhichinvolvebyte[]astheinputparameter clientcode: publicvoidtestHelloDancy(){ try{ Stringurlstr ="http: //w20251-01: 8080/hellows/hello? wsdl"; .URLurl= new.URL(urlstr); Stringns ="/hello"; QName qname =newQName(ns,"Helloservice"); QName port =newQName(ns,"HelloRemotePort"); QName operation=newQName(ns,"helloDancy"); 在Jboss下WebService调用EJB 一.开发环境: 1.JavaSDK1.4 2.Eclipse3.0中文版 3.Jboss3.2应用服务器 4.Windows2000中文专业版 二.环境变量的设置: 以下是我自己机器的环境变量设置,如果是linux系统,设置有所不同: ANT_HOME=C: \ant JAVA_HOME=C: \j2sdk JBOSS_HOME=C: \jboss 最后在系统变量的path变量中追加C: \jboss\bin; 三.会话Bean的编写: 在EJB中,会话BEAN需要实现一个远程接口和一个本地接口,那我们就先实现这个两个接口: 1.远程接口: 我们实现的是一个人员管理的用例,这个用例包含3个方法,代码如下: packagecom.ejb.sessionbean; /***RemoteinterfaceforPersonManager. */publicinterfacePersonManager extendsjavax.ejb.EJBObject{ publiccom.pojo.PersongetPersonByName(java.lang.Stringname) throwsjava.rmi.RemoteException; publicvoidstorePerson(com.pojo.Personperson) throwsjava.rmi.RemoteException; publicvoiddeletePerson(java.lang.Stringname) throwsjava.rmi.RemoteException;} PersonManager接口实现的是EJB的远程接口EJBObject,包含3个方法,描述如下: (1)getPersonByName方法: 通过人员的姓名返回一个Person对象; (2)storePerson方法,通过一个Person对象参数,往人员集合中存储一个人员对象; (3)deletePerson方法,根据一个人员的姓名从人员集合中删除一个人员对象 由于是远程接口,所以每个方法必须抛出RemoteException异常。 2.本地HOME接口的实现: 为了提高EJB的性能,如果是在同一个虚拟机中,EJB可以通过本地接口来调用方法,以提高运行速度。 实现代码如下: /**GeneratedbyXDoclet-Donotedit! */packagecom.ejb.sessionbean; /***HomeinterfaceforPersonManager. */publicinterfacePersonManagerHome extendsjavax.ejb.EJBHome{ publicstaticfinalStringCOMP_NAME="java: comp/env/ejb/PersonManager"; publicstaticfinalStringJNDI_NAME="PersonManagerHomeRemote"; publiccom.ejb.sessionbean.PersonManagercreate() throwsjavax.ejb.CreateException,java.rmi.RemoteException;} PersonManagerHome接口只有一个方法,create方法,它与会话bean的具体实现类中ejbCeate方法一一对应。 3.具体实现类: PersonManagerBean是会话BEAN的具体实现类,必须实现SessionBean接口,而且同时实现了在远程接口中定义的相关业务逻辑方法,具体实现代码如下 packagecom.ejb.sessionbean;importjava.rmi.RemoteException;importjava.util.*;importjavax.ejb.EJBException;importjavax.ejb.SessionBean;importjavax.ejb.SessionContext;importcom.pojo.*;/***@ejb.beandescription="PersonManagerBean"display-name=* "PersonManagerBean"jndi-name="PersonManagerHomeRemote"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Jboss WebService 调用 EJB