JAX-WS方式开发和部署webservice应用
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应用相关推荐
- Xfire方式开发和解析webservice
Xfire方式开发和解析webservice 具体的开发webservice步骤: 1. 新建项目 2. 导入相关xfire架包 主要xfire-1.2.6下xfire-all-1.2.6.jar架包 ...
- 转载 WebService 的CXF框架 WS方式Spring开发
WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- 某系统有6台输出设备 有多个进程均需要使用2台_从零开始学K8s: 2.开发与部署方式的演变...
近年来,应用开发和部署发生了一些变化.这些变化是由两方面促成的,一方面是大型单体应用被拆解为更多小型的微服务,另一方面是应用程序运行所依赖的基础架构发生了变化.理解这些变化,将使我们更好的看到使用k8 ...
- spring和maven_具有Spring和Maven教程的JAX–WS
spring和maven Spring框架通过JAX-WS提供对Web服务的远程支持,实际上,如Spring 参考文档中所述 ,有三种将Spring POJO服务公开为JAX-WS Web服务的方式: ...
- 带有Spring和Maven教程的JAX–WS
Spring框架通过JAX-WS提供对Web服务的远程支持,实际上,如Spring 参考文档中所述 ,有三种将Spring POJO服务公开为JAX-WS Web服务的方式: 公开基于Servlet的 ...
- 开发高性能的WebService应用 zhuan
开发高性能的WebService应用 一. WebService概述 1. 性能 ?设计时就考虑性能 ?不要在事后再加入性能! ?在项目开发的整个过程中反复测试 ?两种量化Web性 ...
- C/S框架-发布和部署WebService
一.C/S框架-WebService部署图 如下图所示,C/S框架由Client端及WebServer端组成.客户端引用WebService接口(可以在CSFramework_Client.WebSe ...
- 软件外包接单经验谈-开发,部署、售后
前面三篇文章大致讲了如何接单,如何喝客户沟通需求,如何报价和签订合同的注意事项.这一篇就来讲讲开发,部署和售后环节需要注意的地方. 外包项目的发展过程有时候也不一定是按照沟通需求,报价,签订合 ...
- 用对方法,开发与部署深度学习原来如此简单……
相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...
最新文章
- 奔跑吧2015,个推一月活动走起
- LaTeX文档插入图片的几种常用方法
- hibernate教程--持久化类状态
- GDCM:dicom文件转储签证变更的测试程序
- ajax初试,获取数据
- 方法 手写promise_JS探索-手写Promise
- 为什么用 Java:一个 Python 程序员告诉你
- python杂志订阅系统详细设计_图书管理系统详细设计说明书(完整).doc
- php 获取 拼音,php获取汉字拼音(一)
- 【day13】【洛谷算法题】-P5713洛谷团队系统-刷题反思集[入门2分支结构]
- 申请企业邮箱有哪些好处?企业邮箱优势盘点
- Fast admin真垃圾 浪费我的时间不说还特么BUG一大堆
- 电源中104电容的作用
- mysql excel 函数_excel常用函数总结
- 【每日一读】Efficient Personalized PageRank Computation: A Spanning Forests Sampling Based Approach
- ITUNES更改备份保存路径(不放C盘,不占C盘)
- Oracle中的日期时间函数
- 【Java集合】List接口常用方法及实现子类
- win7如何设置通电自动开机_如何通过BIOS设置电脑接通电源就自动启动进入系统...
- HTML5期末大作业:化妆品商城网站设计——化妆品商城-功能齐全(43页) HTML+CSS+JavaScript web大作业 静态网页
热门文章
- opencv python 高斯滤波_OpenCV 学习:8 高斯滤波GaussianBlur
- 博客停更,已开公众号-《GIS杂谈》,可直接在微信搜索公众号名称关注,之后会在公众号持续更新相关知识,敬请关注,欢迎讨论~
- Java8 JVM参数解读
- Python利用pywin32实现自动操作电脑
- 大数据可视化当当网图书结课代码流程
- 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。(哈夫曼树)...
- 【C#食谱】【面食】菜单7:用默认值初始化泛型变量
- Ultraiso使用心得
- 四路服务器性能是两路的两倍,至强E7助力四路服务器 性能才是王道
- 20170327 阁下何不随风起