不使用任何框架,纯粹使用JDK开发一个服务端与客户端
- 服务端
package org.zln.ws.server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zln.ws.server.domain.User;
import javax.jws.WebService;
/**
* Created by sherry on 16/12/15.
*/
@WebService
public class UserService {
/**
* 日志
*/
private Logger logger = LoggerFactory.getLogger(UserService.class);
public User getUser(User user) {
logger.debug("收到查询参数:" + user);
return new User();
}
}
将需要保留服务的类,添加@WebService注解即可
然后将服务发布出去
package org.zln.ws.server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.ws.Endpoint;
/**
* Created by sherry on 16/12/15.
*/
public class Main {
/**
* 日志
*/
private static Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/Service/UserService",new UserService());
logger.debug("Service服务发布成功");
}
}
如果在浏览器地址中,能够访问指定的URL,就说明发布成功,这里是 http://localhost:8080/Service/UserService?wsdl
- 客户端
首先使用 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 主机名 验证 示例: wsimport stock.wsdl -b stock.xml -b stock.xjb wsimport -d generated http://example.org/stock?wsdl
调用如下
package org.zln.ws.client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zln.ws.server.User;
import org.zln.ws.server.UserService;
import org.zln.ws.server.UserServiceService;
/**
* Created by sherry on 16/12/15.
*/
public class Main {
/**
* 日志
*/
private static Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
//wsimport -s 目录 ws地址
UserService userService = new UserServiceService().getUserServicePort();
User user = new User();
User user1 = userService.getUser(user);
logger.debug("user:"+user1);
}
}