JAXWS Web 服务入门.docx
《JAXWS Web 服务入门.docx》由会员分享,可在线阅读,更多相关《JAXWS Web 服务入门.docx(27页珍藏版)》请在冰豆网上搜索。
JAXWSWeb服务入门
JAX-WSWeb服务入门
JavaAPIforXMLWebServices(JAX-WS)2.0,JSR224是JavaEE5平台的一个重要组成部分。
作为JavaAPIforXML-basedRPC1.1(JAX-RPC)的后续发行,JAX-WS使用Java技术简化了Web服务的开发任务。
它解决了JAX-RPC1.1中存在的一些问题,提供了对SOAP1.1、SOAP1.2和XML等多个协议的支持,并提供了一个工具专门支持HTTP等其他协议。
JAX-WS使用JAXB2.0进行数据绑定,并支持通过定制控制生成的服务端点接口。
通过其对注释的支持,JAX-WS简化了Web服务开发并减少了运行时JAR文件的大小。
本文档将简要介绍如何使用IDE开发JAX-WSWeb服务并在三个不同的客户机中使用它——JavaSE应用程序中的Java类以及Web应用程序中的servlet或JSP页面。
本文档所创建的三个客户机都是单独的应用程序,他们都使用相同的Web服务。
有关客户机的高级教程,请参阅JAX-WSWeb服务客户机入门。
目录
∙创建Web服务
∙设计Web服务
∙部署和测试Web服务
∙在以下应用程序中使用Web服务
oJavaSE应用程序中的Java类
oWeb应用程序中的servlet
oWeb应用程序中的JSP
本教程所需要的软件
开始之前,需要在您的计算机中下载并安装以下软件:
∙NetBeansIDE6.0Web&JavaEE(下载)。
∙JavaStandardDevelopmentKit(JDK)版本5.0或版本6.0(下载)。
∙GlassfishV2或TomcatWebServer,两者都可在NetBeansIDE6.0安装程序中选择安装。
创建Web服务
本练习的目标是创建一个适合所选部署容器的项目。
然后,我们将在项目中创建一个Web服务。
选择容器
可以将Web服务部署在Web容器或EJB容器中。
这由实现的选择决定。
比如说,如果计划部署到TomcatWebServer中且其中只有一个Web容器,则应该选择创建一个Web应用程序,而不是EJB模块。
1.选择File>NewProject(Ctrl-Shift-N)选项。
选择Web类别中的WebApplication选项,或者选择Enterprise类别中的EJBModule。
2.将项目命名为CalculatorWSApplication。
3.根据所使用的部署服务器,执行以下操作:
o对于GlassFish,将JavaEEVersion设置为JavaEE5.
o对于TomcatWebServer,取消选中SetSourceLevelto1.4复选框。
4.单击Finish按钮。
通过学习Java类创建Web服务
1.右键单击CalculatorWSApplication节点,然后选择New>WebService选项。
2.将Web服务命名为CalculatorWS,并在Package字段中键入org.me.calculator,然后单击Finish按钮。
Projects窗口将显示新Web服务的结构,并且可视化设计器将显示在编辑器区域。
比如说对于Web应用程序,IDE应如下所示:
设计Web服务
本练习的目标是使用IDE所生成的文件和代码执行一些有意义的任务。
我们将添加一个操作。
该操作将添加两个从客户机接收的数字。
在Web服务中添加业务逻辑
1.单击可视化设计器中的AddOperation按钮。
此时将出现一个对话框,我们可以在其中定义新操作。
2.在AddOperation对话框的上部,在Name字段中键入add并在ReturnType下拉列表中键入int。
在AddOperation对话框的下部,单击Add按钮并创建一个int类型的参数,将其命名为i。
然后,再次单击Add按钮并创建一个int类型的参数,将其命名为j。
IDE应如下所示:
3.单击AddOperation对话框底部的OK按钮。
此时,可视化设计器中将显示以下内容:
4.单击Source按钮可以查看前面步骤中生成的源代码,如下所示:
5.在编辑器中,将框架add操作扩展为以下内容(修改以粗体显示):
@WebMethod
publicintadd(@WebParam(name="i")inti,@WebParam(name="j")intj){
intk=i+j;
returnk;
}
从以上代码可以看出,Web服务将接收两个数字并返回他们的和:
在下一节中,我们将使用IDE测试刚才创建的Web服务。
部署和测试Web服务
将Web服务部署到Web容器时,我们可以使用IDE测试Web并查看其功能是否符合预期。
IDE中集成了GlassFish所提供的Tester应用程序,可以实现此目的。
对于TomcatWebServer,它也提供了一个类似的工具。
但是,GlassFish的Tester页面允许用户输入值并进行测试,而TomcatWebServer却不支持此功能。
在后者中,我们只能看到所部署的Web服务,而不能输入值进行测试。
目前,用于测试EJB模块是否已成功部署的工具还不可用。
测试是否成功部署到Web容器
1.右键单击项目并选择Run选项。
IDE将启动应用服务器,编译应用程序并在浏览器中打开。
2.展开WebServices节点,右键单击代表该Web服务的节点,然后选择TestWebService选项。
IDE将在浏览器中打开测试程序页面,前提是在GlassFish中部署了一个Web应用程序。
对于TomcatWebServer和EJB模块的部署,情况则有所不同。
o如果部署到GlassFish,在测试程序页面中键入两个数字,如下所示:
此时,将显示这两个数字的和:
o对于部署到TomcatWebServer情况,您将看到以下页面,其中显示Web服务已成功部署:
o右键单击项目节点,选择Properties选项,然后单击Run按钮。
根据所使用的部署服务器,执行以下操作:
▪对于GlassFish,在RelativeURL字段中键入/CalculatorWSService?
Tester。
▪对于TomcatWebServer,在RelativeURL字段中键入/CalculatorWS?
Tester。
注意:
由于已部署EJB模块的结果并未显示在浏览中,我们无法采用上述步骤处理EJB模块。
使用Web服务
部署好Web服务后,我们需要创建一个客户机来使用Web服务的add方法。
在本文中,我们将创建三个客户机:
分别为JavaSE应用程序中的一个Java类,一个servlet和Web应用程序中的一个JSP页面。
注意:
有关客户机的高级教程,请参阅JAX-WSWeb服务客户机入门。
客户机1:
JavaSE应用程序中的Java类
在本节中,我们将创建一个标准的Java应用程序。
我们将使用创建应用程序的向导再创建一个Java类。
然后,我们将在一些IDE工具中使用本教程开始部分中所创建的Web服务。
1.选择File>NewProject(Ctrl-Shift-N)选项。
选择General类别中的JavaApplication选项。
将项目命名为CalculatorWS_Client_Application。
单击Finish按钮。
2.右键单击CalculatorWS_Client_Application节点,然后选择New>WebServiceClient选项。
3.在Project窗口中,单击Browse按钮。
浏览到要使用的Web服务:
选择Web服务之后,单击OK按钮。
4.输入org.me.calculator.client作为包名,然后单击Finish按钮。
Projects窗口将显示新建的Web服务客户机,其中有一个节点为所创建的add方法。
5.双击Main.java节点在SourceEditor中打开它。
删除TODO注释,然后将上面的add节点拖动到空行中。
应该能看到以下内容:
publicstaticvoidmain(String[]args){
try{//CallWebServiceOperation
org.me.calculator.client.CalculatorWSServiceservice=neworg.me.calculator.client.CalculatorWSService();
org.me.calculator.client.CalculatorWSport=service.getCalculatorWSPort();
//TODOinitializeWSoperationargumentshere
inti=0;
intj=0;
//TODOprocessresulthere
intresult=port.add(i,j);
System.out.println("Result="+result);
}catch(Exceptionex){
//TODOhandlecustomexceptionshere
}
}
注意:
除了拖动add节点之外还有另外一种方法:
在编辑器中单击鼠标右键,然后选择WebServiceClientResources>CallWebServiceOperation选项。
6.使用有意义的数字初始化这两个int类型的变量,比如说3和4。
只需将上面的两个int变量的值从0修改为其他数字。
7.右键单击项目节点并选择Run选项。
此时,Output窗口将显示两个数字之和:
compile:
run:
Result=7
BUILDSUCCESSFUL(totaltime:
1second)
客户机2:
Web应用程序中的Servlet
在本节中,我们将创建一个新的Web应用程序,然后再创建一个servlet。
然后,我们将通过servlet来使用本教程开始部分中所创建的Web服务。
1.选择File>NewProject(Ctrl-Shift-N)选项。
选择Web类别中的WebApplication选项。
将项目命名为CalculatorWSServletClient。
单击Finish按钮。
2.右键单击CalculatorWSServletClient节点,然后选择New>WebServiceClient选项。
此时将出现NewWebServiceClient向导。
3.在Project窗口中,单击Browse按钮。
浏览到要使用的Web服务:
选择Web服务之后,单击OK按钮。
4.在Package字段中,输入org.me.calculator.client。
IDE应如下所示:
单击Finish按钮。
Projects窗口中的WebServiceReferences节点将显示新建客户机的结构,其中包括本教程前面所创建的add方法。
5.右键单击CalculatorWSServletClient项目节点,然后选择New>Servlet选项。
将servlet命名为ClientServlet,并在Package下拉菜单中键入org.me.calculator.client。
单击Finish按钮。
6.要使用servlet成为应用程序的入口点,右键单击项目节点并选择Properties选项,然后单击Run按钮并在RelativeURL中输入/ClientServlet。
单击OK按钮。
7.在SourceEditor中,删除processRequest方法主体中的注释行。
该行如下所示:
/*TODOoutputyourpagehere
接下来,删除代码注释的结束部分:
*/
在该行后面添加一些空行:
out.println("
ServletClientServletat"+request.getContextPath()+"
");
现在,将代表add操作的节点拖动到所创建的空行中。
现在,processRequest方法将如下所示(添加代码以粗体显示):
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
out.println("");
out.println("
");
out.println("
ServletClientServlet");
out.println("");
out.println("
");
out.println("
ServletClientServletat"+request.getContextPath()+"
");
try{//CallWebServiceOperation
org.me.calculator.client.CalculatorWSport=service.getCalculatorWSPort();
//TODOinitializeWSoperationargumentshere
inti=0;
intj=0;
//TODOprocessresulthere
intresult=port.add(i,j);
out.println("Result="+result);
}catch(Exceptionex){
//TODOhandlecustomexceptionshere
}
out.println("");
out.println("");
out.close();
}
将i变量和j变量的值修改为比较有意义的数字,比如说3和4。
8.右键单击项目节点并选择Run选项。
IDE将启动服务器(如果尚未运行);编译并部署应用程序,然后将在浏览器中打开,其中会显示计算结果,如下图所示:
客户机3:
Web应用程序中的JSP页面
在本节中,我们将创建一个新的Web应用程序,然后在WebApplication向导所创建的默认JSP页面中使用该Web服务。
1.选择File>NewProject(Ctrl-Shift-N)选项。
选择Web类别中的WebApplication选项。
将项目命名为CalculatorWSJSPClient。
单击Finish按钮。
2.右键单击CalculatorWSJSPClient节点,然后选择New>WebServiceClient选项。
3.在Project窗口中,单击Browse按钮。
浏览到要使用的Web服务:
选择Web服务之后,单击OK按钮。
4.在Package字段中,输入org.me.calculator.client。
IDE应如下所示:
单击Finish按钮。
Projects窗口将显示新的Web服务客户机,如下所示:
5.在WebServiceReferences节点中,展开表示该Web服务的节点。
我们希望通过客户机调用的add操作现在已经公开。
6.将add操作拖动到客户机的index.jsp页面中,并将其放置在H1标记下面。
现在,index.jsp页面中已经生成了调用服务操作的代码,如下所示:
<%
try{
org.me.calculator.client.CalculatorWSServiceservice=
neworg.me.calculator.client.CalculatorWSService();
org.me.calculator.client.CalculatorWSport=
service.getCalculatorWSPort();
//TODOinitializeWSoperationargumentshere
inti=0;
intj=0;
//TODOprocessresulthere
intresult=port.add(i,j);
out.println("Result="+result);
}catch(Exceptionex){
//TODOhandlecustomexceptionshere
}
%>
将i变量和j变量的值从0修改为比较有意义的数字,比如说3和4。
7.右键单击项目节点并选择Run选项。
IDE将启动服务器(如果尚未运行);编译并部署应用程序,然后将在浏览器中打开,其中会显示计算结果:
JAX-WSWeb服务客户机入门
在本教程中,我们将使用NetBeansIDE6.0提供的Web服务工具对拼写检查(SpellChecker)Web服务进行分析,然后构建一个Web客户机与之进行交互。
目录
∙使用拼写检查Web服务
o创建客户机
o开发客户机
▪编写JSP页面
▪创建和编写拼写检查servlet
o部署客户机
∙学以致用
本教程所需要的软件
开始之前,需要在您的计算机上下载并安装以下软件:
∙NetBeansIDE6.0Web&JavaEE(下载)。
∙JavaStandardDevelopmentKit(JDK)版本5.0或版本6.0(下载)。
∙GlassfishV2或TomcatWebServer,两者都可在NetBeansIDE6.0安装程序中选择安装。
客户机界面如下所示,其中含有从Web服务接收的所有数据:
到本教程结束时,应用程序的功能将包括提供待检查文本、对Web服务调用操作和呈现结果。
IDE将生成联系Web服务及发送文本所需要的所有代码。
拼写检查Web服务将处理其余内容,它将识别拼写错误的单词并提供一个替换词的建议列表。
注意:
本教程所使用的拼写检查Web服务由CDYNECorporation提供。
CDYNE开发和销售一整套综合的数据增强、数据质量和数据分析Web服务及业务智能集成,并为之提供支持。
拼写检查Web服务是CDYNE所提供的Web服务之一。
注意,对于基于一个或多个Web服务的应用程序,其功能取决于这些Web服务的可靠性和可用性。
但是,CDYNE的FAQ指出,其产品的目标为“100%可用性”,并且在“自然灾难、恐怖活动或其他灾难中,Web服务数据流将传递到我们的二级数据中心”。
NetBeans感谢CDYNE为本教程所做的贡献及对其发展的支持。
使用拼写检查Web服务
要使用Web服务,我们需要创建一个Web服务客户机。
针对创建Web服务客户机,NetBeansIDE6.0提供了一个客户机创建工具:
WebServiceClient向导可以生成查找Web服务的代码。
它还提供了一些工具用于开发已创建的Web服务客户机——该工作区域由Projects窗口中的节点组成。
这些工具是标准NetBeansIDE安装的一部分,它们都是直接可以开箱即用的,而不需要任何插件。
创建客户机
在本节中,我们将使用一个向导通过Web服务的WSDL文件生成Java对象。
1.选择File>NewProject(Ctrl-Shift-N)选项。
在Categories列表中,选择Web选项。
在Projects列表中,选择WebApplication选项。
单击Next按钮。
将项目命名为SpellCheckService,并确保指定了合适的服务器作为目标服务器。
有关详细信息,请参见“入门”一节。
单击Finish按钮。
2.在Projects窗口中,右键单击SpellCheckService项目节点并选择New>Other选项。
在NewFile向导中,选择WebServices>WebServiceClient选项。
在WebServiceClient向导中,将以下URL指定给Web服务:
如果位于防火墙后面,则需要指定一个代理服务器——否则无法下载WSDL文件。
如果这样的话,单击WebServiceClient向导中的ProxySettings并设置代理主机和端口号。
3.输入beans.end2end.check.client作为包名。
客户机对象将生成到指定的包名中。
IDE应如下所示:
4.单击Finish按钮。
在Projects窗口的WebServiceReferences节点中,您应看到以下内容:
Projects窗口中的内容表示,服务名为check的Web服务提供了一个CheckTextBody操作供应用程序使用。
CheckTextBody操作将检查字符串中的拼写错误,然后返回数据供客户机处理。
在整篇教程