副标题#e#
Web处事利用一个巨大的体系布局为客户应用措施提供一个简朴机制来从处事器应用措施挪用要领和获取功效,而不消谋略源代码利用的语言和主机平台有什么差异。Sun ONE Studio提供的东西让开拓者可以或许利用包括在现有的Java类中的Web处事、要领–而不需要对这种体系布局有更深的相识。本文从一个基于servlet的Web模块中建设一个Web处事,演示如何利用现有的处事逻辑来生成新的客户应用措施。
先容
回首一下Web处事的焦点技能–XML和简朴工具会见协议( SOAP)–很明明这些技能实现已经在财富情况中存在了很多年了。在这段时间内,构建、测试和陈设Web处事的东西已经极大地成熟了。在前段时间,对付这些要害技能的认识深度–譬喻SOAP信封的布局–是一个先决条件。此刻,利用象Sun ONE Studio这样的高级开拓东西,一个Web处事可以在几分钟之内从一个现有的J2EE Web容器应用措施中生成–不需要像SOAP这样的Web处事技能配景。
本文将模仿一个通用的案例:利用一个基于J2EE Web容器应用措施的现有的处事,而且把它展示为防火墙后的点对点同步集成的Web处事。当利用的示例不是实际的应用措施的时候,它的简朴性提供一个会合建设、陈设和测试一个Web处事的处理惩罚的时机–被大部门全面的J2EE应用措施共用处理惩罚。诸如安详和事务这样的相关主题固然很重要,可是超出了本教程的范畴。
初始化配置任务
为了乐成地遵循本文中的进程,必需配置一个雷同的开拓情况。这个情况包罗Sun ONE Studio 4企业版和Sun ONE应用处事器7平台版本。
产物和文件下载
下面的表格归纳综合了本教程中所需要的产物和文件下载。
产物/文件 | 注解 |
Sun ONE Studio 5尺度版 | Sun ONE Studio 5尺度版预设置了Sun ONE Application Server 7,这个应用处事器是本文所需要的。假如Sun ONE Application Server 7已经安装在你的开拓情况中,那么Sun ONE Studio 5将自动整合到现有的安装中。 |
hellowebmod.zip | 在一个Web模块中的HelloWorld源措施 本教程利用的两个源文件:HelloWorld.java hello措施包中的进口类,用于基于servlet的Web容器应用措施。两个类文件都在com.sun.demo.hello措施包中。 Salutation.java 这是一个简朴的类,包括一个用来作为Web处事的要领。 |
察看文件扩展
默认环境下,IDE在Explorer窗口中埋没了扩展名,可是出于明晰性的原因,本文包罗了文件的扩展名。为了使文件扩展名可见,你可以选择性地执行下面的任务:
1.从IDE主菜单,选择Tools> Options打开Options窗口。
2.打开IDE的Configuration > System,选择System Settings。
3.配置Show File Extensions属性为True。
#p#副标题#e#
情况设置
在本示例中,一个Web模块被建设,而且两个源文件(包罗上面的)被添加来建设Web应用措施。在文件web.xml中,url模式/servlet/HelloWorld被设置用于本示例。
下面的进程将竣事本文中的配置任务,设置你的情况而且安装和演示示例Web模块。
图1:配置默认处事器。
1. 为本示例选择可能建设一个事情目次。然后在这个事情目次之内建设一个名为hellowebmod的子目次。
2. 解压缩示例文件hellowebmod.zip <http://developers.sun.com/tools/javatools/articles/buildingWS/hellowebmod.zip>到hellowebmod目次里。
3.启动Sun ONE Studio 5尺度版。
4.启动Sun ONE应用处事器7。利用Explorer窗口中的Runtime选项卡:
i.打开Installed Servers> Sun ONE Application Server 7> localhost 4848。假如在localhost 4848下没有server1 ( localhost : port_no)节点,那么右击localhost 4848而且从上下文的菜单选择Start来启动Admin Server。
ii.右击server1 ( localhost : port_no)节点,而且从上下文菜单中选择Status。Sun ONE Application Server 7 Instance Status对话窗口将打开。
iii.单击Start server,然后比及对话框中的状态指示器变为Running。
iv.单击OK封锁对话框。
5. 利用Explorer窗口中的Runtime选项卡(拜见图1),为J2EE Applications和Web Tier Applications验证(可能配置,假如须要)默认处事器来运行Sun ONE应用处事器7实例:
i.打开默认处事器(Default Servers)节点。
ii.别离依次右击每一节点。
iii.从上下文菜单选择Set Default Server。iv.打开Select Default Application Server可能Select Default Web Server对话框。
v.打开Sun ONE Application Server 7 > localhost:4848 > server1 ( localhost:4848)下的节点。
vi.选择server1 (localhost:80)。单击OK封锁对话框。
#p#分页标题#e#
6.在Filesystems窗口中加载当地目次hellowebmod。打开加载的目次展示它的WEB – INF目次。验证IDE是否已经承认hellowebmod作为一个Web模块,通过WEB – INF旁边的黄色方框中的绿色圆圈来指定。
7.右击WEB – INF节点,而且从上下文菜单中选择Deploy来陈设示例Web应用措施。
一旦你的情况设置完成,下面的URL(可能雷同的对象,取决于你的设置)应该返回下面表格中指定的问候语。
URL | 问候语 |
http://localhost/servlet/HelloWorld | Hello World! |
http://localhost/servlet/HelloWorld?m=0 | Hello World! |
http://localhost/servlet/HelloWorld?m=1 | Greetings, World! |
http://localhost/servlet/HelloWorld?m=2 | Excuse me, I did not understand. |
建设一个Web处事
下面的进程将展示,作为一个Web处事,Salutation.java中的getmessage()要领与它的int参数和String返回值一起。
图2:Web处事领导。
1.在Explorer窗口中,选择WEB-INF>Classes > com > sun > demo > hello。右击hello节点,而且从上下文菜单选择New > Web Service。
2. 将呈现Web处事领导。
3.在Web Service Wizard的第一个页面(见图2):
4. 在Name字段中,输入SalutationService。这将要成为Web处事的名称,被用作servlet和Web处事类型的名称的一部门。
5.验证Package Name是否com.sun.demo.hello。
6.验证Create From选择是否为Java Methods。
7.对付Architecture,选择Web centric(与之相反的是Multitier)。这将使Web处事可以在除了成熟的应用处事器之外的Web容器中运行。
8. 单击Next按钮,转到Web Service Wizard的下一个页面。
9.在Web ServiceService Wizard的第二个页面中,选择hellowebmod > WEB – INF > Classes > com > sun > demo > hello > Salutation.java > class Salutation > Methods。选择getMessage ()要领,而且单击Finish按钮。
10.在Explorer窗口中,右击SalutationService.xms节点,而且从上下文菜单中选择Generate Web Service Files。
11. 这将生成SalutationService.wsdl文件和一个SalutationServiceGenServer文件夹名。生成的文件夹包括利用RMI的类来实现这条链的一部门,利用挪用它的长途历程来毗连getMessage ()要领。
12. 留意:假如一个动静对话框呈现,指明某些类被标志为RMI工具,只是不需要遵循它的指令来封锁对话框。所有用于运行Web处事所须要的代码和设置文件此刻已经被建设了。
所有用于运行Web处事所须要的代码和设置文件此刻已经被建设了。
SalutationService.wsdl是一个利用XML名目描写Web处事的Web处事界说语言( WSDL)文件可以多种途径来利用。譬喻,一个WSDL文件可以宣布为一个通用描写、发明和集成(UDDI)注册,在这里另一个应用措施可以找到它而且可以编程生成SOAP请求–所有的这些都可以不举办人工过问。这个进程雷同于Java反射,这里的要领可以在运行时间发明。
另一种利用要领是这个文件可以在一个组织(可能相助组织)内部共享而且有效地用作一个协约,界说提供了什么处事而且如何利用。另外,"协约(contract)"的观念和Java接口背后的观念大不沟通。另外,我们迟些将看到WSDL文件可用于建设一个Web处事客户端,而这个Web处事客户端将和用于本教程的Web处事示例彼此浸染。
包装一个Web处事
到今朝为止有两个Web模块:最初的servlet和新建设的Web处事。因为这两个Web模块基于同一个Salutation.java文件,这两个Web模块应该统一以便更新只需要在某处陈设的salutation.class。一旦竣事,一个会见HelloWorld servlet的新的URL将可用,而且包括的Java类将呈此刻一个新的位置。
为了归并最初的servlet和新建设的Web处事。
1.在Explorer窗口中,右击SalutationService.xms文件,而且从上下文菜单中选择Export WAR file。
2.这生成WAR模块文件salutationservice.war,包括web.xml,sun – web.xml和其它所需要的文件。
3.将打开一个询问对话框,询问你是否想为Web处事生成一个测试客户端。点击No。在本教程稍后的处所将生成一个测试客户端。
4.右击WAR模块文件SalutationService.war,而且从上下文菜单中选择Unpack as Web Module。
5.建设而且选择SalutationService目次,在这个目次中打开Web模块。加载SalutationService目次作为Sun ONE Studio的一个文件系统。
6.Sun ONE Studio此刻将识别这个文件系统作为一个Web模块–通过它的WEB-INF节点旁边的绿色的Web模块图标来标示。
#p#分页标题#e#
7.从hellowebmod/WEB – INF/classes/com/sun/demo/hello/目次中复制文件HelloWorld.java和Salutation.java。然后把它们粘贴到SalutationService/WEB – INF/classes/com/sun/demo/hello/目次中。
8. 留意:对付Copy选项,选择Paste而不是Create链接。同时,封锁大概呈现"Changes recommended in deployment descriptor.."动静的对话框,而且不接管推荐的改观。
9. 把HelloWorld servlet添加到SalutationService Web模块,如下:
. 在Explorer窗口中,选择SalutationService>WEB-INF节点,右击web.xml节点而且从上下文菜单中选择Properties。
i. 找到Servlets属性,而且点击它的相应的Browse button (…)。将打开Servlets Property Editor对话框。
ii. 点击Servlets Property Editor中的Add按钮。将打开Add Servlet对话框。
iii. 配置Servlet Name字段为HelloWorld。通过点击Browse (…)按钮配置Servlet Class字段而且选择SalutationService/WEB – INF/classes/com/sun/demo/hello/HelloWorld.java。
iv. 通过点击相应的Browse ( Edit…)按钮配置Mappings字段。将打开Edit Servlet Mappings对话框。
v. 点击Edit Servlets Mappings对话框中的Add按钮。将打开Add Servlet Mapping对话框。
vi. 在Edit Servlet Mappings对话框中配置Servlet Name为HelloWorld,而且配置URL Pattern为/hello。
vii. 在每个对话窗口中点击OK按钮封锁它们。(拜见图3)
图3:把HelloWorld servlet添加到SalutationService Web模块中。
10.右击WEB – INF节点,而且打开它的属性对话框。配置上下文根为/SalutationService。
陈设一个Web处事
接下来的任务是在Sun ONE Application Server上陈设Web处事。
Sun ONE Studio尺度版可以利用它的组合式体系机构陈设到各类应用处事器中,默认环境包罗Tomcat和J2EE Reference Implementation处事器。 Sun ONE Application Server安装措施将安装插件。
一旦安装正确,Sun ONE Application Server7应该在Sun ONE Studio中和在Explorer窗口的Runtime选项卡中以及Server Registry > Installed Server下可视。验证它是否是默认应用处事器,然后利用一个简朴的步调陈设你的Web处事应用措施到这个容器中:
1.右击节点SalutationService > WEB – INF,从上下文菜单中选择Build All从头编译新复制的类。
2.右击WEB – INF节点,而且从上下文菜单中选择Deploy来陈设示例Web应用措施。
基于缺省值,此刻可以在下面的URL中测试示例Web处事的陈设(拜见图4):
§ http://localhost/SalutationService/SalutationService
图4:会见SalutationService Web处事。
下面的URL是可以会见的相关servlet和它的参数值:
§ http://localhost/SalutationService/hello
§ http://localhost/SalutationService/hello?m=0
§ http://localhost/SalutationService/hello?m=1
§ http://localhost/SalutationService/hello?m=2
此刻建设并陈设了一个具有成果的Web处事和servlet。在最初的SalutationService Web模块hellowebmod中的机能和源代码已经在新的Web模块中被从头结构了一遍。本来的hellowebmod此刻就是多余的了,可以删除去了。
接下来,我们将建设一个能和我们的web处事编程交互的web处事客户应用措施。
建设一个Web处事客户措施
接下来的任务是建设一个能和方才设置的web处事编程交互的web处事客户应用措施。
留意:假如你将在差异的呆板可能文件系统上开拓客户措施,你必需首先把WSDL文件生存在http://localhost/SalutationService/SalutationService
1. 从Explorer窗口中的Filesystems选项卡中,在已有的SalutationService/WEB – INF/classes/com/sun/demo/文件夹中建设一个名为client的新建文件夹。
2. 右击新的client目次,从上下文菜单中选择New > All Templates启动New Wizard。然后选择Web Services > Web Service Client而且按下一步。
3. Web Service Client Wizard的第一个页面:
i. 配置Name字段为SalutationClient。
ii. 确认Package字段被配置为com.sun.demo.client,也就是说client目次是在这之下建设的。
iii. 配置Create From字段为Local WSDL File。
iv. 单击Next按钮。
4. 在Web Service Client Wizard的第二个页面,如下选择Local WSDL文件:
i. 选择节点SalutaionService > SalutationService.wsdl
ii. 单击Next按钮。
Web处事描写文件SalutationClient.wsc此刻将被生成。
5. 右击新生成的Web处事描写文件节点SalutationClient.wsc,而且从它的上下文菜单中选择Properties,确认Soap Runtime属性配置为JAXRPC。
6. 右击SalutationClient.wsc而且从上下文菜单选择Generate Client Files。
这个呼吁将生成完成这个客户端所需要的类和文档。
7. 再次右击SalutationClient.wsc。这次,从上下文菜单中选择Deploy。
这个呼吁将发生客户措施署理措施类,组装WAR模块,而且把它设置到应用处事器中。
8. Web处事客户措施此刻可以在下面的URL处会见(拜见图5):http://localhost/SalutationClient。
图5:利用SalutationClient。
#p#分页标题#e#
为了在你的欣赏器中测试新的Web处事客户措施,输入0~2之间的一个整数,而且点击Invoke按钮。客户措施将发送一个SOAP名目标请求到Web处事,返回一个SOAP响应。然后客户措施将显示一个包罗一个到原始SOAP名目标响应的链接的很是名目化的响应。
调试
假如你碰着因为类加载器不能发奉上下文信息到JAXRPCContextListener的环境所引起的加载servlet类的问题,请查抄WEB-INF/classes/com/sun/demo/hello/forte4j/webdesigner/basecomponent/目次中是否有KOMODOxxx.class文件。假如没有这个文件,从Sun ONE Studio Filesystem中添加这些文件。