webService学习(三)—— 部署webService到tomcat上

偏执的太偏执、 2022-07-11 04:19 1125阅读 0赞

webService学习(三)—— 部署webService到tomcat上

本文阅读前提:

1、能够部署本地的webService

2、能够编写客户端调用webService。(可以参考文章:http://blog.csdn.net/wild46cat/article/details/54572361和

http://blog.csdn.net/wild46cat/article/details/54427365)

经过前两篇文章,能够在本机上进行webservice的部署和调用了。但是在真正的生产环境中,还是需要把webservice部署到web 容器中,比如最常用的tomcat中。

本文主要参考:

http://www.cnblogs.com/549294286/p/3477075.html

好,下面上货。

1、首先需要下载https://jax-ws.java.net/。因为tomcat中没有内置的jax-ws的功能,所以需要从外部引入jar包。

Center

下载完成后,主要使用的就是lib下的jar包。

2、新建一个web程序,我这里用的是maven建的一个简单的web程序。

Center 1

3、下面是红色框中的文件内容:

Hello.java使用@WebService表明是一个WebService

  1. package com.xueyoucto.xueyou;
  2. import javax.jws.WebService;
  3. import javax.jws.soap.SOAPBinding;
  4. import javax.xml.ws.Endpoint;
  5. /**
  6. * Created by Administrator on 2017/1/14.
  7. */
  8. @WebService
  9. @SOAPBinding(style = SOAPBinding.Style.RPC)
  10. public class Hello {
  11. public String testService(String params){
  12. return "hello " + params;
  13. }
  14. public String testStudent(Student student){
  15. return student.getName() + " : " + student.getAge();
  16. }
  17. }

student.java 是Hello.java需要的一个简单的类

  1. package com.xueyoucto.xueyou;
  2. /**
  3. * Created by Administrator on 2017/1/16.
  4. */
  5. public class Student {
  6. private String name;
  7. private int age;
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14. public int getAge() {
  15. return age;
  16. }
  17. public void setAge(int age) {
  18. this.age = age;
  19. }
  20. public Student(String name, int age) {
  21. this.name = name;
  22. this.age = age;
  23. }
  24. public Student() {
  25. }
  26. }

sun.jaxws.xml 用于说明发布的WebService

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
  3. version='2.0'>
  4. <endpoint name='Hello' implementation='com.xueyoucto.xueyou.Hello'
  5. url-pattern='/HelloService' />
  6. </endpoints>

web.xml

1、加入监听器,用于建立WebService上下文。

2、配置webService对应的web中的发布路径。

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4. <web-app>
  5. <display-name>Archetype Created Web Application</display-name>
  6. <listener>
  7. <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
  8. </listener>
  9. <servlet>
  10. <servlet-name>Hello</servlet-name>
  11. <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
  12. <load-on-startup>2</load-on-startup>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>Hello</servlet-name>
  16. <url-pattern>/HelloService</url-pattern>
  17. </servlet-mapping>
  18. </web-app>

比较重要的是,引入最开始下载的jax-ws的jar包。在idea中可以在如下界面中引入:

Center 2

4、非常重要:记得把下载的jax-ws文件下lib中的jar包复制到tomcat文件夹中的lib文件夹下。(如果怕出现问题,可以先备份一份再复制)

5、启动tomcat(启动的时候可能会出现找不到jar文件的warning,不用理会)

Center 3

到此,一个简单的WebService就可以被其他的机器访问了。下面我们测试一下:

1、新建一个简单的java程序。

2、新建一个存放WebService接口和文件的包

3、引入webservice,在新建的包上点击右键,选择web service >Generate…。

Center 4

4、注意红色框中的内容是刚才发布的WebService的wsdl的地址

Center 5

5、生成后的效果:

Center 6

6、编写调用webService的测试程序。

  1. package com.xueyoucto.xueyou;
  2. import com.other.webservice.Hello;
  3. import com.other.webservice.HelloService;
  4. import com.other.webservice.Student;
  5. import javax.xml.ws.WebServiceException;
  6. /**
  7. * Hello world!
  8. */
  9. public class App {
  10. public static void main(String[] args) {
  11. System.out.println("Hello World!");
  12. try{
  13. Hello hello = new HelloService().getHelloPort();
  14. String s = hello.testService("123");
  15. System.out.println(s);
  16. Student student = new Student();
  17. student.setAge(12);
  18. student.setName("aabbcc");
  19. String s2 = hello.testStudent(student);
  20. System.out.println(s2);
  21. }catch (WebServiceException wse){
  22. System.out.println("服务未启动");
  23. wse.printStackTrace();
  24. }catch (Exception e){
  25. e.printStackTrace();
  26. }
  27. }
  28. }

7、测试程序运行截图:

Center 7

发表评论

表情:
评论列表 (有 0 条评论,1125人围观)

还没有评论,来说两句吧...

相关阅读