· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [访谈] 网银安全系列访谈之:惊心动魄网银故事
· [热点专题] 网银安全系列 3G上网卡巡礼
· [订阅IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 跨站脚本十二问 四步防范Conficker
· [热点] Windows 7 RC版公开下载 憾缺中文版

JBoss 4.0 中使用WEB Service

发布时间:2006.08.08 10:03     来源:CSDN    作者:swingseagull

1. 安装Jboss

2. 将webservice endpoint当成servlet

3. 写一个远端的interface

4. 在eclipse中配置一个external tool:wscompile

4. 写一个config.xml, 然后用JWSDP的JAXRPC中的wscompile生成mapping.xml和wsdl

5. 必须存在4个文件:web.xml,webservices.xml,mapping.xml和.wsdl

6. webservices 中的port name 要和.wsdl中的一致

7. 使用lomboz或jbossIDE deploy

详细实例:

1. create a class

package service;

public class Hello {

public boolean helloDancy(String hello){

System.out.println(hello);

return true;

}

}

2. create corresponding remote interface

package remote;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface HelloRemote extends Remote {

public boolean helloDancy(String hello) throws RemoteException;

}

3. create web.xml in WEB-INF folder

< ?xml version="1.0" encoding="UTF-8"? >

< web-app version="2.4"

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/web-app_2_4.xsd" >

< servlet >

< servlet-name >helloServlet< /servlet-name >

< servlet-class >service.Hello< /servlet-class >

< /servlet >

< servlet-mapping >

< servlet-name >helloServlet< /servlet-name >

< url-pattern >/hello< /url-pattern >

< /servlet-mapping >

< /web-app >

4. create config.xml

< ?xml version="1.0" encoding="UTF-8"? >

< configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config" >

< service name="helloservice"

targetNamespace="/hello"

typeNamespace="/hello/types"

packageName="service" >

< interface name="remote.HelloRemote" / >

< /service >

< /configuration >

5. create folder wsdl in WEB-INF/ and run wscompile from jaxrpc folder in sun's jwsdp1.5 package

wscompile -cp output/classes -gen:server -f:documentliteral -mapping jaxrpc-mapping.xml -keep config.xml

-keep: keep the generated source file

6. After executing wscompile.bat, a mapping.xml and helloservice.wsdl are generated

7. create webservice.xml

< ?xml version="1.0" encoding="UTF-8"? >

< webservices 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://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd" version="1.1" >

< webservice-description >

< webservice-description-name >hello world< /webservice-description-name >

< wsdl-file >WEB-INF/wsdl/helloservice.wsdl< /wsdl-file >

< jaxrpc-mapping-file >WEB-INF/mapping.xml< /jaxrpc-mapping-file >

< port-component >

< port-component-name >hello-dancy< /port-component-name >

< wsdl-port >HelloRemotePort< /wsdl-port >

< service-endpoint-interface >remote.HelloRemote< /service-endpoint-interface >

< service-impl-bean >

< servlet-link >helloServlet< /servlet-link >

< /service-impl-bean >

< /port-component >

< /webservice-description >

< /webservices >

8. create hello.war and deploy it to jboss4.0.1

9. create test client

public void testHelloDancy() {

try{

String urlstr = "http://w20251-01:8080/hellows/hello?wsdl";

java.net.URL url = new java.net.URL(urlstr);

String ns = "/hello";

QName qname = new QName(ns, "Helloservice");

QName port = new QName(ns, "HelloRemotePort");

QName operation = new QName(ns, "helloDancy");

Service service = new Service();

Call call = (Call)service.createCall();

call.setTargetEndpointAddress( url );

call.setOperationName( operation );

call.addParameter( "String_1", XMLType.XSD_BASE64, ParameterMode.IN);

call.setReturnType( XMLType.XSD_BOOLEAN);

Boolean ret = (Boolean)call.invoke(new Object[]{"hello, Dancy".getBytes()});

} catch(Exception e){

e.printStackTrace();

}

}

10. set the classpath to lead to jars in axis's lib folder

11. customized object which involve byte[] as the input parameter

client code:

public void testHelloDancy() {

try{

String urlstr = "http://w20251-01:8080/hellows/hello?wsdl";

java.net.URL url = new java.net.URL(urlstr);

String ns = "/hello";

QName qname = new QName(ns, "Helloservice");

QName port = new QName(ns, "HelloRemotePort");

QName operation = new QName(ns, "helloDancy");

Service service = new Service();

Call call = (Call)service.createCall();

QName qn = new QName( "/hello/types", "Dto" ); //refer to .wsdd

call.registerTypeMapping(service.Dto.class, qn,

new org.apache.axis.encoding.ser.BeanSerializerFactory(service.Dto.class, qn),

new org.apache.axis.encoding.ser.BeanDeserializerFactory(service.Dto.class, qn));

call.setTargetEndpointAddress( url );

call.setOperationName( operation );

call.addParameter( "arg0", qn, ParameterMode.IN);

call.setReturnType( XMLType.XSD_BOOLEAN);

service.Dto dto = new Dto();

dto.setParam("hello, Dancy".getBytes());

Boolean ret = (Boolean)call.invoke(new Object[]{dto});

} catch(Exception e){

e.printStackTrace();

}


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 应用服务器 -JBoss技术支持文档 (07-31) · JBoss创始人Marc Fleury:先赚钱后开源 (07-21)
· JBoss 实施企业系统管理开源战略 (06-27) · 开源JBoss 牵手Sun成NetBeans合作伙伴 (06-12)
· Java规则引擎JBoss Drools 3 发布 (06-09) · 红帽公司完成对JBoss的收购 推进双方发展 (06-08)
· JBoss EJB 3.0 RC7 发布 (05-31) · 经验的总结:开发J2EE应用中的一些要领 (05-22)
· 传IBM计划收购SAP 因受红帽收购JBoss刺激 (04-24) · 不顾JBoss被收购 Novell坚持与其合作 (04-17)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
2009第七届中国电脑商年会直播
·创业投资系列访谈:产业..
·特别策划:视频网站系列..
·专题:网游虚拟货币新规..
专题:6月上市手机新品回顾及7月新机展望
·2009年中国电信业信息化..
·专题:把iPhone 3GS“解..
·WAPI重启国际标准进程 ..
专题:09年中盘点-联想春季打印机新品回顾
·InfoComm 2009 视听与集..
·网游背后的故事 网游服..
·[专题]联想ThinkPad T40..
BizSpark:微软为技术创业企业点燃火花
·社区活动:我的IT求知生..
·访谈:内网安全2009系列..
·安全访谈:网银安全之Sa..