分享
 
 
 

JBoss 4.0 中使用web service

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

大致过程

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();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有