设为首页收藏本站language 语言切换
查看: 1936|回复: 0
收起左侧

Java课堂:在Java EE Server中实现Web服务

[复制链接]
发表于 2010-2-20 15:09:31 | 显示全部楼层 |阅读模式
<p >现在,我们开始在应用服务器上部署一个与前例类似的Web服务。为了能够运行本节的例子,我们需要从http://java.sun.com/javaee/downloads/index.jsp 处下载一个Windows平台下的Java EE 5 Update 4应用服务器(java_ee_sdk-5_04-windows-nojdk.exe)。<p ><b>安装并启动服务器</b><p >如果您的机器上安装有最新版的JDK,您可以选择下载nojdk的安装版本,否则,您需要下载”Java EE+JDK”的版本。双击下载的exe文件,安装到您的本地硬盘(安装目录路径中最好不要有空格和怪字符)。<p >启动Java EE服务器的缺省域非常简单,您只需要从”程序”菜单中选择”Start Default Server”即可。<p >Start -> All Programs -> Sun Microsystems -> Java EE 5 SDK -> Start Default Server<p >服务器启动后,您可以在浏览器输入下列地址,验证一下您的服务器是否已经启动。<p >http://127.0.0.1:8080/<p >有时,您会发现,使用命令行方式启动服务器比较简单,首先,您需要进入下面的目录路径下,执行下列命令:<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>cd %J2EE_HOME%\libasadmin-pause start-domain domain1</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><br><p >其中,J2EE_HOME是您机器上Java EE Server的安装目录。<p ><b>服务器端和客户端代码</b><p >您可以在ch03\01_JaxWs\JavaEEServer\src目录下找到本节使用的服务器及客户端的源代码文件(译者注:本书代码请从http://www.packtpub.com/files/code/3216_Code.zip处下载),下面是对这些源代码的解释:<p >HelloWebService.java<p >HelloWebService类中也使用了Java注解,这些注解的意思和前面的例子相同,此处不再赘述。<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>@WebService public class HelloWebService {   private static int times;   public HelloWebService() {     System.out.println(&quot;Inside HelloWebService.HelloWebService...&quot;);   }   public String hello(String param) {     System.out.println(&quot;Inside HelloWebService.hello... - &quot; + (++times));     return &quot;Return From Server : Hello &quot; + param;   } }</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><br><p ><b>Client.java</b><p >客户端的代码非常简单:<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>public class Client {   @WebServiceRef(wsdlLocation=  &quot;http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL&quot;)   static HelloWebServiceService service;   public static void main(String[] args) {     Client client = new Client();     client.test();   }   public void test() {     try {         HelloWebService helloWebServicePort = service             .getHelloWebServicePort();         String ret = helloWebServicePort.hello(System             .getProperty(&quot;user.name&quot;));         System.out.println(&quot;Hello result = &quot; + ret);     } catch (Exception e) {         e.printStackTrace();     }   } }</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><br><p >上面的代码中,我们使用了javax.xml.WebServiceRef注解,该注解声明了一个已发布的Web服务的引用,而@WebServiceRef使用wsdlLocation元素指明了HelloWebService这个服务的WSDL文件的位置;接下来,客户端就可以获取远程服务的代理,从而通过代理调用Web服务方法。<p ><b>运行服务器和客户端</b><p >为了简单起见,本例中我们也不对该服务进行打包,而只是直接将Web服务的实现类编译后放到Java EE Server的autodeploy目录中,及%J2EE_HOME%\domains\domain1\autodeploy目录。<p ><b>我们可以用一个ant命令执行以下三步:</b><p >  (1)编译服务器端和客户端代码<br>    (2)把服务器端类部署到缺省域中<br>    (3)运行客户端程序,向服务器端发送Web服务请求<p >现在,假定您的Java EE服务器已经启动并运行,请到本章的源代码目录下,执行下列命令:<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>cd ch03\01_JaxWS\JavaEEServerant</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><br><p >上面命令执行后,控制台上的输出,您可以看到,客户端首先向服务器发送请求,然后,服务器的响应会打印在客户端的控制台上。<p >当然,您也可以在浏览器中输入http://localhost:8080/HelloWebService/HelloWebServiceService?WSDL,来访问上面已经部署的Web服务的WSDL。<p >本文来源:<u>Carl</u>的赛迪IT博客!<p >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-8 16:36 , Processed in 0.059217 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表