JAX-WS方式开发和部署webservice应用

  • 1.创建webservice工程
  • 2.书写服务端代码
  • 3.配置文件
  • 4.启动服务,查看wsdl
  • 5.客户端调用测试
  • 其他

需要源码的可以去我的资源里下载

1.创建webservice工程

1.创建web工程
2.导入JAX-WS RI依赖jar包,下载地址:https://jax-ws.java.net/

2.书写服务端代码

1.接口类

package com.origin.webservice;import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import com.origin.bean.User;@WebService
public interface UserService {@WebResult(name="UserName")String findUserNameById(@WebParam(name="UserId")String UserId);@WebResult(name="User")User addUser(@WebParam(name="User")User u);List<User> findUserList();
}

注意:@WebService注解是必须的,其他注解有兴趣可以研究下
2.实现类

package com.origin.webservice.impl;import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import com.origin.bean.User;
import com.origin.webservice.UserService;@WebService(endpointInterface = "com.origin.webservice.UserService")
public class UserServiceImpl implements UserService {private List<User> userList = new ArrayList<User>();public String findUserNameById(String UserId) {for (User user : userList) {if(user.getUserId().equals(UserId)){return user.getUserName();}}return "用户不存在!";}public User addUser(User u) {userList.add(u);return u;}public List<User> findUserList() {return userList;}
}

注意:@WebService(endpointInterface = “com.origin.webservice.UserService”)注解是必须的,需要指定到接口类
3.接口中测试的User类

package com.origin.bean;public class User {private String UserId;private String UserName;private int UserAge;public String getUserId() {return UserId;}public void setUserId(String userId) {UserId = userId;}public String getUserName() {return UserName;}public void setUserName(String userName) {UserName = userName;}public int getUserAge() {return UserAge;}public void setUserAge(int userAge) {UserAge = userAge;}public User() {super();}public User(String userId, String userName, int userAge) {super();UserId = userId;UserName = userName;UserAge = userAge;}@Overridepublic String toString() {return "User [UserId=" + UserId + ", UserName=" + UserName + ", UserAge=" + UserAge + "]";}
}

3.配置文件


注意:配置文件路径都在WEB-INF下


1.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!-- 项目名称 --><display-name>JAX-WS_WebService</display-name><listener><listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class></listener><servlet>  <servlet-name>jaxws</servlet-name>  <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class><!-- 设置web容器启动时初始化WS核心Servlet -->  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>  <servlet-name>jaxws</servlet-name>  <url-pattern>/services</url-pattern>  </servlet-mapping>
</web-app>

2.sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"><endpoint name="userservice" implementation="com.origin.webservice.impl.UserServiceImpl"url-pattern="/service/userservice" />
</endpoints>

一个服务对应一个endpoint节点,implementation=“com.origin.webservice.impl.UserServiceImpl”,指定实现类

4.启动服务,查看wsdl

wsdl地址:http://localhost:8080/JAX-WS_WebService/service/userservice?wsdl
service/userservice对应url-pattern="/service/userservice"
JAX-WS_WebService为项目名称

5.客户端调用测试

本例使用wsimport生成客户端代码

用法: wsimport [options] <WSDL_URI>  其中 [options] 包括:  -b <path>                 指定 jaxws/jaxb 绑定文件或附加模式  (每个 <path> 都必须具有自己的 -b)  -B<jaxbOption>            将此选项传递给 JAXB 模式编译器  -catalog <file>           指定用于解析外部实体引用的目录文件  支持 TR9401, XCatalog 和 OASIS XML 目录格式。  -d <directory>            指定放置生成的输出文件的位置  -encoding <encoding>      指定源文件所使用的字符编码  -extension                允许供应商扩展 - 不按规范  指定功能。使用扩展可能会  导致应用程序不可移植或  无法与其他实现进行互操作  -help                     显示帮助  -httpproxy:<host>:<port>  指定 HTTP 代理服务器 (端口默认为 8080)  -keep                     保留生成的文件  -p <pkg>                  指定目标程序包  -quiet                    隐藏 wsimport 输出  -s <directory>            指定放置生成的源文件的位置  -target <version>         按给定的 JAXWS 规范版本生成代码  默认为 2.2, 接受的值为 2.0, 2.1 和 2.2  例如, 2.0 将为 JAXWS 2.0 规范生成兼容的代码  -verbose                  有关编译器在执行什么操作的输出消息  -version                  输出版本信息  -wsdllocation <location>  @WebServiceClient.wsdlLocation 值  -clientjar <jarfile>      创建生成的 Artifact 的 jar 文件以及  调用 Web 服务所需的 WSDL 元数据。  -generateJWS              生成存根 JWS 实现文件  -implDestDir <directory>  指定生成 JWS 实现文件的位置  -implServiceName <name>   生成的 JWS 实现的服务名的本地部分  -implPortName <name>      生成的 JWS 实现的端口名的本地部分  扩展:  -XadditionalHeaders              映射标头不绑定到请求或响应消息不绑定到  Java 方法参数  -Xauthfile                       用于传送以下格式的授权信息的文件:  http://username:password@example.org/stock?wsdl  -Xdebug                          输出调试信息  -Xno-addressing-databinding      允许 W3C EndpointReferenceType 到 Java 的绑定  -Xnocompile                      不编译生成的 Java 文件  -XdisableAuthenticator           禁用由 JAX-WS RI 使用的验证程序,  将忽略 -Xauthfile 选项 (如果设置)  -XdisableSSLHostnameVerification 在提取 wsdl 时禁用 SSL 主机名  验证

1.cmd窗口输入wsimport -keep -d d:/ -p com.origin.wsimport http://localhost:8080/JAX-WS_WebService/service/userservice?wsdl,将客户端代码生成在d盘根目录下
命令:

代码路径
2.将代码复制到工程中

3.调用服务

package com.origin.client;import java.util.List;
import javax.xml.ws.Holder;
import org.junit.Test;
import com.origin.wsimport.User;
import com.origin.wsimport.UserServiceImplService;public class UserClient {UserServiceImplService usis= new UserServiceImplService();@Testpublic void addUserClient(){User user = new User();user.setUserId("16630");user.setUserName("陈雪松");user.setUserAge(18);Holder<User> u = new Holder<User>(user);usis.getUserServiceImplPort().addUser(u);System.out.println("添加成功!");}@Testpublic void findUserNameByIdClient(){String username = usis.getUserServiceImplPort().findUserNameById("11111");System.out.println("查询信息:"+username);}@Testpublic void findUserListClient(){List<User> userList = usis.getUserServiceImplPort().findUserList();for (User user : userList) {System.out.println(user);}}
}

其他

jax-ws 提供了SOAPHandler和LogicalHandler接口,是很核心的内容,起到拦截器的作用,以后有机会用到再做研究。

JAX-WS方式开发和部署webservice应用相关推荐

  1. Xfire方式开发和解析webservice

    Xfire方式开发和解析webservice 具体的开发webservice步骤: 1. 新建项目 2. 导入相关xfire架包 主要xfire-1.2.6下xfire-all-1.2.6.jar架包 ...

  2. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  3. 某系统有6台输出设备 有多个进程均需要使用2台_从零开始学K8s: 2.开发与部署方式的演变...

    近年来,应用开发和部署发生了一些变化.这些变化是由两方面促成的,一方面是大型单体应用被拆解为更多小型的微服务,另一方面是应用程序运行所依赖的基础架构发生了变化.理解这些变化,将使我们更好的看到使用k8 ...

  4. spring和maven_具有Spring和Maven教程的JAX–WS

    spring和maven Spring框架通过JAX-WS提供对Web服务的远程支持,实际上,如Spring 参考文档中所述 ,有三种将Spring POJO服务公开为JAX-WS Web服务的方式: ...

  5. 带有Spring和Maven教程的JAX–WS

    Spring框架通过JAX-WS提供对Web服务的远程支持,实际上,如Spring 参考文档中所述 ,有三种将Spring POJO服务公开为JAX-WS Web服务的方式: 公开基于Servlet的 ...

  6. 开发高性能的WebService应用 zhuan

    开发高性能的WebService应用 一.      WebService概述 1.      性能 ?设计时就考虑性能 ?不要在事后再加入性能! ?在项目开发的整个过程中反复测试 ?两种量化Web性 ...

  7. C/S框架-发布和部署WebService

    一.C/S框架-WebService部署图 如下图所示,C/S框架由Client端及WebServer端组成.客户端引用WebService接口(可以在CSFramework_Client.WebSe ...

  8. 软件外包接单经验谈-开发,部署、售后

    前面三篇文章大致讲了如何接单,如何喝客户沟通需求,如何报价和签订合同的注意事项.这一篇就来讲讲开发,部署和售后环节需要注意的地方.     外包项目的发展过程有时候也不一定是按照沟通需求,报价,签订合 ...

  9. 用对方法,开发与部署深度学习原来如此简单……

    相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...

最新文章

  1. 奔跑吧2015,个推一月活动走起
  2. LaTeX文档插入图片的几种常用方法
  3. hibernate教程--持久化类状态
  4. GDCM:dicom文件转储签证变更的测试程序
  5. ajax初试,获取数据
  6. 方法 手写promise_JS探索-手写Promise
  7. 为什么用 Java:一个 Python 程序员告诉你
  8. python杂志订阅系统详细设计_图书管理系统详细设计说明书(完整).doc
  9. php 获取 拼音,php获取汉字拼音(一)
  10. 【day13】【洛谷算法题】-P5713洛谷团队系统-刷题反思集[入门2分支结构]
  11. 申请企业邮箱有哪些好处?企业邮箱优势盘点
  12. Fast admin真垃圾 浪费我的时间不说还特么BUG一大堆
  13. 电源中104电容的作用
  14. mysql excel 函数_excel常用函数总结
  15. 【每日一读】Efficient Personalized PageRank Computation: A Spanning Forests Sampling Based Approach
  16. ITUNES更改备份保存路径(不放C盘,不占C盘)
  17. Oracle中的日期时间函数
  18. 【Java集合】List接口常用方法及实现子类
  19. win7如何设置通电自动开机_如何通过BIOS设置电脑接通电源就自动启动进入系统...
  20. HTML5期末大作业:化妆品商城网站设计——化妆品商城-功能齐全(43页) HTML+CSS+JavaScript web大作业 静态网页

热门文章

  1. opencv python 高斯滤波_OpenCV 学习:8 高斯滤波GaussianBlur
  2. 博客停更,已开公众号-《GIS杂谈》,可直接在微信搜索公众号名称关注,之后会在公众号持续更新相关知识,敬请关注,欢迎讨论~
  3. Java8 JVM参数解读
  4. Python利用pywin32实现自动操作电脑
  5. 大数据可视化当当网图书结课代码流程
  6. 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。(哈夫曼树)...
  7. 【C#食谱】【面食】菜单7:用默认值初始化泛型变量
  8. Ultraiso使用心得
  9. 四路服务器性能是两路的两倍,至强E7助力四路服务器 性能才是王道
  10. 20170327 阁下何不随风起