JAXWS学习总结.docx
- 文档编号:17372336
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:31
- 大小:1.43MB
JAXWS学习总结.docx
《JAXWS学习总结.docx》由会员分享,可在线阅读,更多相关《JAXWS学习总结.docx(31页珍藏版)》请在冰豆网上搜索。
JAXWS学习总结
JAX-WS学习总结
环境搭建
所需工具
JAXWS2.2.1-20100617.zip
JDK6
操作步骤:
将D:
\jar\jaxws-ri\lib目录下的jaxb-api.jar、jaxws-api.jar拷贝到
D:
\ProgramFiles\Java\jre1.6.0_02\lib\endorsed目录下(如果没有endorsed目录则创建)
设置jre
将myeclipse默认的jre设为D:
\ProgramFiles\Java\jre1.6.0_02
操作步骤
服务器端程序
项目目录
用户库
jax-ws
将D:
\jar\jaxws-ri\lib目录下所有的jar添加到该用户库中,并将其导入到项目工程中。
源代码
Order.java
packagecom.jaxws.bean;
importjava.io.Serializable;
publicclassOrderimplementsSerializable{
privateStringorderid;
privateStringname;
publicStringgetOrderid(){
returnorderid;
}
publicvoidsetOrderid(Stringorderid){
this.orderid=orderid;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
OrderService.java
packagecom.jaxws.service;
importjava.util.List;
importcom.jaxws.bean.Order;
publicinterfaceOrderService{
publicStringgetUserName(Stringname);
publicOrdergetOrder(Stringorderid);
publicList
}
OrderServiceBean.java
packagecom.jaxws.service.impl;
importjava.util.ArrayList;
importjava.util.List;
importjavax.jws.WebService;
importcom.jaxws.bean.Order;
importcom.jaxws.service.OrderService;
@WebService(targetNamespace="",
name="OrderService",serviceName="OrderServiceBean")
publicclassOrderServiceBeanimplementsOrderService{
publicStringgetUserName(Stringname){
returnname;
}
publicOrdergetOrder(Stringorderid){
Orderorder=newOrder();
order.setOrderid(orderid);
order.setName("OrderName");
returnorder;
}
publicList
List
Orderorder1=newOrder();
order1.setOrderid("001");
order1.setName("OrderName1");
Orderorder2=newOrder();
order2.setOrderid("002");
order2.setName("OrderName2");
persons.add(order1);
persons.add(order2);
returnpersons;
}
}
sun-jaxws.xml
xmlversion="1.0"?
>
xmlns=" url-pattern="/OrderServicePort"> web.xml xmlversion="1.0"encoding="UTF-8"? > xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" com.sun.xml.ws.transport.http.servlet.WSServlet com.sun.xml.ws.transport.http.servlet.WSServletContextListener 生成WebService 操作步骤 在浏览器中输入http: //localhost: 8080/WebService/OrderServicePort,查看服务发布。 至此,服务发布成功 客户端程序 程序目录 操作步骤 将build.xml文件拷贝到项目程序根目录下,在根目录下新建lib目录,将D: \jar\jaxws-ri\lib目录下所有的jar包拷贝到lib目录下。 运行build.xml的wsclientgen生成客户端调用代码。 源代码 build.xml xmlversion="1.0"encoding="UTF-8"? > //localhost: 8080/WebService/OrderServicePort? wsdl" sourcedestdir="${src.dir}"package="com.jaxws.client"keep="true" verbose="true"destdir="${basedir}/bin"/> WebServiceTest.java packagejunit.test; importjava.util.List; importorg.junit.Test; importcom.jaxws.client.Order; importcom.jaxws.client.OrderService; importcom.jaxws.client.OrderServiceBean; publicclassWebServiceTest{ @Test publicvoidtestGetUserName(){ OrderServiceBeanorderServiceBean=newOrderServiceBean(); OrderServiceorderService=orderServiceBean.getOrderServicePort(); System.out.println(orderService.getUserName("张三")); } @Test publicvoidtestOrder(){ OrderServiceBeanorderServiceBean=newOrderServiceBean(); OrderServiceorderService=orderServiceBean.getOrderServicePort(); Orderorder=orderService.getOrder("123"); System.out.println("orderid: "+order.getOrderid()+"orderName: " +order.getName()); } @Test publicvoidtestOrders(){ OrderServiceBeanorderServiceBean=newOrderServiceBean(); OrderServiceorderService=orderServiceBean.getOrderServicePort(); List for(Orderorder: orders) System.out.println("orderid: "+order.getOrderid()+"orderName: " +order.getName()); } } 服务器端程序(异步调用) 程序目录 用户库 jax-ws 源代码 AddNumbersService.java packagecom.jaxws.service; publicinterfaceAddNumbersService{ publicintaddNumbers(intnumber1,intnumber2); } AddNumbersServiceBean.java packagecom.jaxws.service; importjavax.jws.WebService; @WebService(name="AddNumbersService",serviceName="AddNumbersServiceBean", targetNamespace="") publicclassAddNumbersServiceBeanimplementsAddNumbersService{ publicintaddNumbers(intnumber1,intnumber2){ System.out.println("ReceivedRequest! "); System.out.println("Sleepingfor5seconds"); try{ Thread.sleep(5000); }catch(InterruptedExceptione){ thrownewRuntimeException(e); } returnnumber1+number2; } } sun-jaxws.xml xmlversion="1.0"? > xmlns=" url-pattern="/AddNumbersServicePort"> web.xml xmlversion="1.0"encoding="UTF-8"? > xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" 客户端程序(异步调用) 程序目录 用户库 jax-ws junit4 操作步骤 源代码 AddNumbersCallbackHandler.java packagecom.jaxws.async; importjava.util.concurrent.ExecutionException; importjavax.xml.ws.AsyncHandler; importjavax.xml.ws.Response; publicclassAddNumbersCallbackHandlerimplementsAsyncHandler privateAddNumbersResponseoutput; publicvoidhandleResponse(Response System.out.println("AddNumbersCallbackHandler: ReceivedResponsefromtheservice"); try{ output=response.get(); }catch(ExecutionExceptione){ e.printStackTrace(); }catch(InterruptedExceptione){ e.printStackTrace(); } } publicAddNumbersResponsegetResponse(){ returnoutput; } } AsyncWebServiceTest.java packagejunit.test; importjava.util.concurrent.ExecutionException; importjava.util.concurrent.Future; importjavax.xml.ws.Response; importorg.junit.BeforeClass; importorg.junit.Test; importcom.jaxws.async.AddNumbersCallbackHandler; importcom.jaxws.async.AddNumbersResponse; importcom.jaxws.async.AddNumbersService; importcom.jaxws.async.AddNumbersServiceBean; publicclassAsyncWebServiceTest{ privatestaticAddNumbersServiceaddNumbersService; @BeforeClass publicstaticvoidBeforeClass(){ AddNumbersServiceBeanaddNumbersServiceBean=newAddNumbersServiceBean(); addNumbersService=addNumbersServiceBean.getAddNumbersServicePort(); } /** *同步调用 */ @Test publicvoidtestSynchronous(){ intnumber1=10; intnumber2=20; System.out.println("\nInvokingsynchronousaddNumber(): "); intresult=addNumbersService.addNumbers(number1,number2); System.out.printf("Theresultofadding%dand%dis%d.\n",number1,number2,result); } @Test publicvoidtestAsync()throwsInterruptedException,ExecutionException{ intnumber1=10; intnumber2=20; //setrequesttimeoutto30sec,sothattheclientdoesn'twait //forever inttimeout=30000; //((BindingProvider)addNumbersService).getRequestContext().put(JAXWSProperties.REQUEST_TIMEOUT, //timeout); System.out.println("\nInvokingAsynchronousPollingaddNumbersAsync(): "); Response number1,number2); while(! resp.isDone()){ System.out.println("NoResponseyet,Sleepingfor1sec"); Thread.sleep(1000); } AddNumbersResponseoutput=resp.get(); System.out.printf("Theresultofadding%dand%dis%d.\n",number1, number2,output.getReturn()); } @Test publicvoidtestAsyncHandler()throwsInterruptedException{ intnumber1=10; intnumber2=20; System.out.pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAXWS 学习 总结