1.  接口类

package bob.webservice.jwsTest;

import javax.jws.WebParam;

import javax.jws.WebResult;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

@WebService

@SOAPBinding(style = SOAPBinding.Style.RPC)

public interface IMyService {

@WebResult(name="addResult")

public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);

@WebResult(name="loginUser")

public User login(@WebParam(name="username")String username,@WebParam(name="password")String password);

}

2. 实现类

package bob.webservice.jwsTest;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService(endpointInterface="bob.webservice.jwsTest.IMyService") //这里必须是可以检索到的全路径

public class MyServiceImpl implements IMyService {

public MyServiceImpl() {

// TODO Auto-generated constructor stub

}

@Override

public int add(int a, int b) {

System.out.println(a + "+" + b + "=" + (a + b));

return a+b;

}

@Override

public User login(@WebParam(name = "username") String username,

@WebParam(name = "password") String password) {

System.out.println(username + " is logging");

User user = new User();

user.setId("1");

user.setUsername(username);

user.setPassword(password);

return user;

}

}

涉及到的实体类

package bob.webservice.jwsTest;

public class User {

public User() {

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

private String id;

private String username;

private String password;

}

3.生产 及注册 WS服务

package bob.webservice.jwsTest;

import javax.xml.ws.Endpoint;

public class MyServer {

public MyServer() {

// TODO Auto-generated constructor stub

}

public static void main(String[] args) {

String address = "http://localhost:8882/ns";

Endpoint.publish(address, new MyServiceImpl());

System.out.println("JAX-WS WebService 服务已启动 发布成功!!!!");

}

}

4. 本地客户端模拟调用

package bob.webservice.jwsTest;

import java.net.MalformedURLException;

import java.net.URL;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

public class TestClient {

public TestClient() {

// TODO Auto-generated constructor stub

}

//Wsimport -d C:/work/me/default/marsworkspace/javaProject/bobTest/ -keep -verbose http://localhost:8882/ns?wsdl

//

public static void main(String[] args) {

try {

//创建访问wsdl服务地址的url

URL url = new URL("http://localhost:8882/ns?wsdl"); //URL接口知道,但是下面的未必公开

//通过QName指明服务的和具体信息

//反方向

QName sname= new QName("http://jwsTest.webservice.bob/","MyServiceImplService");

//创建服务

Service service = Service.create(url,sname);

//实现接口

IMyService ms =service.getPort(IMyService.class);

System.out.println(ms.add(12, 33));

System.out.println(ms.add(1, 3));

User user = ms.login("bob", "123456");

System.out.println("current userId = "+user.getId()+" name:"+user.getUsername());

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

这样的问题, 这个地址 是对外公开的,但是其他客户端的类包就没有公开,换句话讲,没法用

URL url = new URL("http://localhost:8882/ns?wsdl");  //URL接口知道,但是下面的未必公开

我们可以通过jdk,使用导出命令,将wsdl中的接口描述来生成这个接口以及实现类,然后将生成的接口和实现类应用在我们自己的java程序中就可以了,具体的生成命令是:Wsimport -d C:/work/me/default/marsworkspace/javaProject/bobTest/ -keep -verbose http://localhost:8882/ns?wsdl

可以集成到本地,(User.java IMyService.java)进行访问及调用。

要提醒指出的是,wsimport可以用于非Java的服务器端,如:服务器端也许是C# 编写的web service,通过wsimport则生成Java的客户端实现。

命令参数说明:

-d 生成客户端执行类的class文件的存放目录

-s 生成客户端执行类的源文件的存放目录

-p 定义生成类的包名

java jws-_java JWS 应用及实践相关推荐

  1. Java 异常处理的 9 个最佳实践

    Java 异常处理的 9 个最佳实践 原文地址:https://dzone.com/articles/9-... 翻译出处:https://www.oschina.net/trans... 在 Jav ...

  2. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

  3. JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例

    简介:JAVA应用开发MQ实战最佳实践--Series2:消息队列RocketMQ性能测试案例 往期内容 JAVA应用开发MQ实战最佳实践--Series1:RocketMQ综述及代码设计 1. 消息 ...

  4. 关于JAVA异常处理的20个最佳实践

    关于JAVA异常处理的20个最佳实践 在我们深入了解异常处理最佳实践的深层概念之前,让我们从一个最重要的概念开始,那就是理解在JAVA中有三种一般类型的可抛类: 检查性异常(checked excep ...

  5. 小菜:Java异常处理的10个最佳实践

    转载自   小菜:Java异常处理的10个最佳实践 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nu ...

  6. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc

    java课程设计(扫雷游戏)讲解.doc 成 绩 评 定 表 学生姓名班级学号 专 业课程设计题目基于Java的扫雷游戏软件设计评 语 组长签字: 成绩 日期 2014 年 月 日 课程设计任务书 学 ...

  7. Java 中处理 Exception 的最佳实践

    Java 中处理 Exception 的最佳实践 在Java中处理异常并不是一个简单的事情.不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样 ...

  8. 【java】Java 动态调试技术原理及实践

    1.概述 转载:Java 动态调试技术原理及实践 一.动态调试要解决的问题 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停 ...

  9. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  10. Java诊断工具-Arthas入门与实践

    Java诊断工具-Arthas入门与实践 目录 Java诊断工具-Arthas入门与实践 什么是Arthas? Arthas能做什么? 我在哪里可以下载Arthas? 快速入门 1. 下载并运行mat ...

最新文章

  1. “神仙”打架,“凡人”遭殃
  2. mysql为int类型的字段php取出来之后为何变为string类型?
  3. Linux系统之创建逻辑卷
  4. Oracle触发器详细介绍
  5. PHP代码调试神器Whoops
  6. 图象:sine(正弦)、cosine(余弦)与Tangent(正切)
  7. JS 全局变量、局部变量(与其他语言不太一样)
  8. jQuery formValidator 表单校验插件4.1.1高仿网易邮箱注册页面(已发演示链接)
  9. Jmeter(七)Jmeter脚本优化(数据与脚本分离)
  10. “Hello World!“”团队第七周召开的第二次会议
  11. SpringBoot(二)
  12. java毕业设计物流跟踪系统mybatis+源码+调试部署+系统+数据库+lw
  13. 百度快速排名 24小时进前五 刷网站排名
  14. Hadoop之——重新格式化HDFS的方案
  15. 搭建好的飞飞服务器(虚拟机)+客户端(物理机)分享给大家
  16. mysql同步大师_Mysql 同步大师(MySQLSync)
  17. UE4 Spline的使用
  18. Xilinx Zynq实现任意波形发生器仿真
  19. Java实现 藏宝架的宝物(分组DP,7.27阿里面试题)
  20. 全球语言标准码(ISO-639)

热门文章

  1. MediaPlayer.isPlaying() IllegalStateException的一种情况
  2. HIDS入侵检测能力评估list
  3. 2022年Java应届生面试之Spring框架基础知识
  4. android视频编码格式,Android,ios平台上x264编码实时视频参数设置与优化 | 贝壳博客...
  5. 九龙证券|长线资金整体加仓 青睐能源科技材料等板块
  6. fastqc检验时不能执行java_fastqc对原始测序reads质控
  7. acwing1113 红与黑
  8. 如何入驻832优选平台
  9. mac之间迁移微信聊天记录
  10. ios手机编辑html转pdf文件,苹果手机居然能一键转换PDF文件?iPhone老司机才知道...