使用 Web 服务
使用 web 服务是客户端使用 web 服务时进行的操作。使用 IDE 设置客户端很方便,所以它可以使用 web 服务。使用向导导入描述 web 服务接口的 WSDL 文件。然后将其集成到客户端,以便 web 服务执行对您有用的操作。
注意:Web 服务可用于 web 应用程序或 Java 应用程序。在下面的例子中,您只能将 web 服务用于 web 应用程序。
创建 Web 应用程序项目
- 选择 File > New Project (Ctrl-Shift-N)。在 Categories 下选择 Web。在 Projects 下选择 Web Application。单击 Next。将项目命名为 HiWSClient,将 Project Folder 更改到计算机上的任一文件夹,并确保在 Server 下拉式列表中选择您选择的服务器。单击 Finish。
发现关于 Web 服务的信息
- 右键单击 HiWSClient 项目节点,选择 New > Web Service Client。在 WSDL URL 文本框中复制和粘贴正在运行的 web 服务的 URL。例如,URL 可以是以下形式:
http://localhost:8080/HiWS/HiWS?WSDL
- 单击 Retrieve WSDL。当在 Local Filename 文本框中填写 WSDL 文件名时,WSDL 文件即可被正确检索到。在 Package 字段中键入 org.me.hi。
- 根据服务器执行以下操作:
- 对于 Sun Java System Application Server,选择 J2EE Container 生成的静态 stub。
- 对于其他服务器(如 JBoss 应用服务或 Tomcat Web 服务器),必须选择 IDE 生成的静态 stub。
- 单击 Finish。
- 展开 Web Service Reference 节点并且保持展开节点,直到到达 sayHi 节点。右键单击 sayHi 节点并选择 Test Operation。在 Test Web Service Operation 对话框中,在 Value 文本框中键入 "John" 并单击 Submit。结果 "Hi John!" 即显示在对话框的底部。既然测试了操作,并且对公开的 web 服务对您有用的情况感到满意,您就要准备开发与其交互的客户端应用程序。
开发 Web 服务客户端
- 右键单击 HiWSClient 项目节点并选择 New > Servlet。命名 web 服务 HiServlet,在 Package 下拉式列表中键入 org.me.hi,单击 Next,然后单击 Finish。在 Source Editor 中打开 servlet HiServlet.java。
- 在 Source Editor 中,在 HiServlet 类中的 processRequest 操作内右键单击。选择 Web Service Client Resources > Call Web Service Operation,选择 sayHi 操作并单击 OK。
3. 现在填写生成的框架代码,以便与以下形式一样:
try { out.println(getHiWSSEIPort().sayHi("John")); } catch(java.rmi.RemoteException ex) { out.println("<p>Caught an exception <p>" + ex); }
4. 重新安排代码片段,以便将它放在 processRequest 方法的 <body> 标记之间:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet HiServlet</title>"); out.println("</head>"); out.println("<body>"); try { out.println(getHiWSSEIPort().sayHi("John")); } catch(java.rmi.RemoteException ex) { out.println("<p>Caught an exception <p>" + ex); } out.println("</body>"); out.println("</html>"); out.close(); }
5. 其次,要使用户能够与 web 服务交互,请向 servlet 添加一个表格并将用户输入传递到 web 服务(只有下面的 红色代码与上面的不一
样):
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet HiServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>Enter your name:</p>"); out.println("<form method=\"get\">"); out.println("<input type=\"text\" name=\"name\" size=\"25\">"); out.println("<br>"); out.println("<p>"); out.println("<input type=\"submit\" value=\"Submit\">"); out.println("</form>"); String name = request.getParameter("name"); if ( name != null ) { try { out.println(getHiWSSEIPort().sayHi(name)); } catch(java.rmi.RemoteException ex) { out.println("<p>Caught an exception <p>" + ex); } } out.println("</body>"); out.println("</html>"); out.close(); }
别忘了将字符串 "John" 改为变量 name,如上面的代码所示!
部署 Web 服务客户端
- 在 Projects 窗口中右键单击 HiWSClient 项目节点,并选择 Properties。在 Project Properties 对话框中,选择 Run 窗格。执行以下操作:
- 在 Server 下拉式列表中选择服务器。
- 在 Relative URL 文本框中键入 /HiServlet。
- 单击 OK。
-
部署 web 服务客户端。应该看到类似于以下在 IDE 默认浏览器中显示的链接:

-
键入 "John" 并单击 Submit。现在应该看到下图:

故障排除
由于 IDE 提供与 Web 服务通信所需的大多数代码,所以只有您遇到的问题才是自己的代码中的错误。此外,虽如此,如果您在防火墙后面,则可能会遇到几个问题。随后的故障排除提示将试图解决这一问题。
- 部署 Sun Java System Application Server。如果部署了应用程序而没有正确设置代理主机和端口,则会看到类似于与浏览器中此情形相似的内容:
- 部署 Sun Java System Application Server。如果部署了应用程序而没有正确设置代理主机和端口,则会看到类似于与浏览器中此情形相似的内容:

要解决此问题,则执行以下操作:
- 在 Runtime 窗口中,确保 Sun Java System Application Server正在运行。如果正在运行,则在服务器名称的左边显示一个绿色箭头。
- 展开 Sun Java System Application Server 节点,右键单击 JVM 节点并选择 Properties。
- 单击 JVMOptions 属性右边的省略号。
- 将以下两个属性添加到列表中:
- -Dhttp.proxyHost=my.host
- -Dhttp.proxyPort=my.port.number
确保为这些属性设置的值适用于您的环境。
- -Dhttp.proxyHost=my.host

要解决此问题,则执行以下操作:
- 选择 Tools > Options。
- 在 Options 窗口中,设置代理主机和端口号。