工作环境
win10、myeclipse2014、tomact8.0
温馨小提示:
1. tomcat里面没有WebService相关的包是用不了,我从官网下的 tomact把WebService 项目跑起来竟然报错,错误也在这里贴一下。
HTTP Status 404 – Not Found
Type Status Report
Message /WebSerTest2/SayHelloWorldPort
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/7.0.91
如果遇到错误是 HTTP Status 404 – Not Found,把其他常规的错误都排除掉了,可以看一下是不是 tomact 、myeclipse等环境的原因。我遇到这个问题没去百度查 tomcat 怎么装和 WebService 相关 jar 包的,同事直接把她的 tomcat 给我,把代码跑起来就 ok 了。这里我也把能解决这个错误的 tomcat 分享一下。
tomcat8.0 WebServic能用 :
链接:https://pan.baidu.com/s/10vUbtyYns9q5qL-DmxBhbA
提取码:yubv
一、新建WebService 服务端
1.新建 Web Service Project,步骤:File ----> New ----> Web Service Project 。新建项目过程中有两个小细节需要注意。
2. 导入 JAX-WS 包,文字步骤就不写了,看图片一步步点下去就好。
3. 创建服务实现类。 右键 src ----> New ----> Class ----> 输入包名 类名,点击finish.
在类中创建两个实现方法。
package com.ffcs.demo.ws;
public class SayHelloImpl {
/**
* 1.接口1
* @param inXml
* @return
*/
public String hello1(String inXml) {
String outXml = "hello hello11111" + inXml;
return outXml;
}
/**
* 1.接口2
* @param inXml
* @return
*/
public String hello2(String inXml) {
String outXml = "hello hello22222" + inXml;
return outXml;
}
}
4. 新建 web Service。文字步骤就不写了,看图片一步步点下去就好。
5 .验证并获取 WSDL 文件。把项目部署到Tomcat,启动。
(1)把项目部署到Tomcat,启动。
(2) 验证并获取 WSDL 文件。
如果这里出现
HTTP Status 404 – Not Found
这个错误,去看一下本博客开头,是不是那个错误。
二、新建WebService 客户端
这里需要特别说明一下,如果你的项目是要部署到 Weblogic 上,其实只有一个步骤稍有不同,下面会有提示 。
1. 新建 Web 项目(Dynamic Web Project)File ----> New ----> Other
新建一个包 com.ffcs.demo.service,然后新建web service 服务端
点击 next ----> finish 完成。看到 com.ffcs.demo.service 包下生成调用 web service服务端的 Java类,说明客户端创建成功。
特别说明:,如果你的项目是要部署到 Weblogic 上,只有上面这里不同,WSDL URL 路径 需要的是 服务端部署到 Weblogic 上,用浏览器访问生成那个 WSDL URL,详情请看我 另一篇博客。
在 com.ffcs.demo.service 包下新建一个 Test 测试类,输入测试代码。
package com.ffcs.demo.service;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1. 创建服务SayHelloImplService
SayHelloImplService service = new SayHelloImplService ();
//2. 根据SayHelloImplService 服务获取调用客户端
SayHelloImplDelegate d = service.getSayHelloImplPort();
//3. 调用具体接口服务
System.out.println(d.hello1(""));
System.out.println(d.hello2(""));
}
}
启动测试类,小细节:启动该测试类的时候,部署服务端的 tomact 一定也是启动状态。测试结果:
可以看到 ,客户端调用服务端成功。
三、加上 Servlet
1. 在 com.ffcs.demo.service 包下新建 Servlet
点击下一步、下一步、完成。
2.重写 doGet() doPost() 函数。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//1. 创建服务SayHelloImplService
SayHelloImplService service = new SayHelloImplService ();
//2. 根据SayHelloImplService 服务获取调用客户端
SayHelloImplDelegate d = service.getSayHelloImplPort();
//3. 调用具体接口服务
String rs = d.hello1("");
response.getOutputStream().write(rs.getBytes());
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
3. jsp
<body>
<form action="servletServiceTomcat" method="post">
<input type="text" name="name" />
<input type="submit" value="submit"/>
</form>
</body>
客户端项目结构
4. 把服务端项目 HelloWebService 和服务端 HelloClientWeb
部署到 myeclipse tomcat 。启动 tomcat , 浏览器访问。
小提示:如果出现 HTTP Status 404
详情看我另一篇博客HTTP Status 404 (URL)