写一个最简单的Web Services服务端

  1. package com.initit.webservice.demo;
  2. import javax.jws.WebMethod;
  3. import javax.jws.WebParam;
  4. import javax.jws.WebResult;
  5. import javax.jws.WebService;
  6. import javax.xml.ws.Endpoint;
  7. /*
  8. *手机的业务类,该业务类通过webservice 对外提供服务
  9. * 1. 声明: @webservice
  10. * 2. 发布 EndPoint
  11. */
  12. //声明该业务类 对外提供webservice服务 ,默认只是对public 修饰的方法对外以webservice形式发布
  13. //@WebService
  14. public class PhoneService {
  15. public void sayHello(String city){
  16. System.out.println("你好:"+city);
  17. }
  18. public static void main(String[] args) {
  19. String address="http://127.0.0.1:8888/ws/phoneService";
  20. /**
  21. * 发布webservice服务
  22. * 1.address:服务的地址
  23. * 2:implementor 服务的实现对象
  24. */
  25. Endpoint.publish(address, new PhoneService());
  26. System.out.println("wsdl地址 :"+address+"?WSDL");
  27. }
  28. }
  1. 在类上添加@WebService注解,代表发布一个WebService服务
  2. 通过EndPoint(端点服务)发布一个webService。Endpoint也是jdk提供的一个专门用于发布服务的类,它的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。它位于javax.xml.ws.*包中。
  3. Endpoint.publish(String address, Object implementor) 静态方法在给定地址处针对指定的实现者对象创建并发布端点
  4. 给类添加上@WebService注解后,类中所有的非静态方法都将会对外公布
  5. 如果希望某个方法不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开。
  6. 如果一个类上,被添加了@WebService注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。
  7. protected、private、final、static方法不能对外公开

增加复杂度

  1. # 写一个pojo
  2. public class Phone {
  3. private String name;//操作系统名
  4. private String owner;//拥有者
  5. private int total;//市场占有率
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public String getOwner() {
  13. return owner;
  14. }
  15. public void setOwner(String owner) {
  16. this.owner = owner;
  17. }
  18. public int getTotal() {
  19. return total;
  20. }
  21. public void setTotal(int total) {
  22. this.total = total;
  23. }
  24. }
  25. #发布Web Services服务
  26. package cn.it.ws.d;
  27. import cn.it.ws.model.Phone;
  28. import javax.jws.WebMethod;
  29. import javax.jws.WebParam;
  30. import javax.jws.WebResult;
  31. import javax.jws.WebService;
  32. import javax.xml.ws.Endpoint;
  33. /*
  34. *手机的业务类,该业务类通过webservice 对外提供服务
  35. * 1. 声明: @webservice
  36. * 2. 发布 EndPoint
  37. */
  38. @WebService (serviceName="PhoneManager",//修改服务名
  39. targetNamespace="http://dd.ws.it.cn") //修改命名空间 ,默认包名,取反
  40. //声明该业务类 对外提供webservice服务 ,默认只是对public 修饰的方法对外以webservice形式发布
  41. public class PhoneService {
  42. /**@WebMethod(operationName="getMObileInfo"): 修改方法名
  43. * @WebResult(name="phone"):修改返回参数名
  44. * @WebParam(name="osName"):修改输入参数名
  45. */
  46. @WebMethod(operationName="getMObileInfo")
  47. public @WebResult(name="phone") Phone getPhoneInfo(@WebParam(name="osName")String osName){
  48. Phone phone=new Phone();
  49. if(osName.endsWith("android")){
  50. phone.setName("android");phone.setOwner("google");phone.setTotal(80);
  51. }else if(osName.endsWith("ios")){
  52. phone.setName("ios");phone.setOwner("apple");phone.setTotal(15);
  53. }else{
  54. phone.setName("windows phone");phone.setOwner("microsoft");phone.setTotal(5);
  55. }
  56. return phone;
  57. }
  58. @WebMethod(exclude=true)//把该方法排除在外
  59. public void sayHello(String city){
  60. System.out.println("你好:"+city);
  61. }
  62. private void sayLuck(String city){
  63. System.out.println("好友:"+city);
  64. }
  65. void sayGoodBye(String city){
  66. System.out.println("拜拜:"+city);
  67. }
  68. protected void saySayalala(String city){
  69. System.out.println("再见!"+city);
  70. }
  71. public static void main(String[] args) {
  72. String address1="http://127.0.0.1:8888/ws/phoneService";
  73. // String address2="http://127.0.0.1:8888/ws/phoneManager";
  74. /**
  75. * 发布webservice服务
  76. * 1.address:服务的地址
  77. * 2:implementor 服务的实现对象
  78. */
  79. Endpoint.publish(address1, new PhoneService());
  80. // Endpoint.publish(address2, new PhoneService());
  81. System.out.println("wsdl地址 :"+address1+"?WSDL");
  82. }
  83. }
  84. # protectedprivatefinalstatic方法不能对外公开
  85. @WebService // 添加了此注解,代表是一个WebService
  86. public class HelloWorld {
  87. // 非 static final private 方法默认会发布
  88. public String sayHi(String name) {
  89. return "hello" + name;
  90. }
  91. @WebMethod(exclude=true)
  92. public void exclude(){
  93. // 被注解排除的方法
  94. }
  95. protected void protected1(){
  96. //受保护的方法默认不发布
  97. }
  98. private void private1(){
  99. // 私有方法默认不发布
  100. }
  101. public static void static1(){
  102. // static 方法默认不发布
  103. }
  104. public final void final1(){
  105. // final 方法默认不发布
  106. }
  107. }

实现接口的webservice

  1. import javax.jws.WebService;
  2. /**面向接口的webservice发布方式
  3. *
  4. *
  5. */
  6. @WebService
  7. public interface JobService {
  8. public String getJob();
  9. }
  10. import javax.jws.WebService;
  11. @WebService(endpointInterface="cn.it.ws.e.JobService")//设置服务端点接口 ,指定对外提供服务的接口
  12. public class JobServiceImpl implements JobService {
  13. @Override
  14. public String getJob() {
  15. return "JEE研发工程师|Android研发工程师|数据库工程师|前端工程师|测试工程师|运维工程师";
  16. }
  17. public void say(){
  18. System.out.println("早上好!");
  19. }
  20. }
  21. import javax.xml.ws.Endpoint;
  22. public class Test {
  23. public static void main(String[] args) {
  24. JobService jobService=new JobServiceImpl();
  25. String address="http://192.168.114.10:9999/ws/jobservice";
  26. Endpoint.publish(address, jobService);
  27. System.out.println("wsdl地址:"+address+"?WSDL");
  28. }
  29. }