WebService基本使用

不使用任何框架,纯粹使用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
View Code

调用如下

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);
}
}
原文地址:https://www.cnblogs.com/sherrykid/p/6254054.html