java jws-_java JWS 应用及实践
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 应用及实践相关推荐
- Java 异常处理的 9 个最佳实践
Java 异常处理的 9 个最佳实践 原文地址:https://dzone.com/articles/9-... 翻译出处:https://www.oschina.net/trans... 在 Jav ...
- 《转载》Java异常处理的10个最佳实践
本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...
- JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例
简介:JAVA应用开发MQ实战最佳实践--Series2:消息队列RocketMQ性能测试案例 往期内容 JAVA应用开发MQ实战最佳实践--Series1:RocketMQ综述及代码设计 1. 消息 ...
- 关于JAVA异常处理的20个最佳实践
关于JAVA异常处理的20个最佳实践 在我们深入了解异常处理最佳实践的深层概念之前,让我们从一个最重要的概念开始,那就是理解在JAVA中有三种一般类型的可抛类: 检查性异常(checked excep ...
- 小菜:Java异常处理的10个最佳实践
转载自 小菜:Java异常处理的10个最佳实践 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nu ...
- 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc
java课程设计(扫雷游戏)讲解.doc 成 绩 评 定 表 学生姓名班级学号 专 业课程设计题目基于Java的扫雷游戏软件设计评 语 组长签字: 成绩 日期 2014 年 月 日 课程设计任务书 学 ...
- Java 中处理 Exception 的最佳实践
Java 中处理 Exception 的最佳实践 在Java中处理异常并不是一个简单的事情.不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样 ...
- 【java】Java 动态调试技术原理及实践
1.概述 转载:Java 动态调试技术原理及实践 一.动态调试要解决的问题 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停 ...
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- Java诊断工具-Arthas入门与实践
Java诊断工具-Arthas入门与实践 目录 Java诊断工具-Arthas入门与实践 什么是Arthas? Arthas能做什么? 我在哪里可以下载Arthas? 快速入门 1. 下载并运行mat ...
最新文章
- “神仙”打架,“凡人”遭殃
- mysql为int类型的字段php取出来之后为何变为string类型?
- Linux系统之创建逻辑卷
- Oracle触发器详细介绍
- PHP代码调试神器Whoops
- 图象:sine(正弦)、cosine(余弦)与Tangent(正切)
- JS 全局变量、局部变量(与其他语言不太一样)
- jQuery formValidator 表单校验插件4.1.1高仿网易邮箱注册页面(已发演示链接)
- Jmeter(七)Jmeter脚本优化(数据与脚本分离)
- “Hello World!“”团队第七周召开的第二次会议
- SpringBoot(二)
- java毕业设计物流跟踪系统mybatis+源码+调试部署+系统+数据库+lw
- 百度快速排名 24小时进前五 刷网站排名
- Hadoop之——重新格式化HDFS的方案
- 搭建好的飞飞服务器(虚拟机)+客户端(物理机)分享给大家
- mysql同步大师_Mysql 同步大师(MySQLSync)
- UE4 Spline的使用
- Xilinx Zynq实现任意波形发生器仿真
- Java实现 藏宝架的宝物(分组DP,7.27阿里面试题)
- 全球语言标准码(ISO-639)
热门文章
- MediaPlayer.isPlaying() IllegalStateException的一种情况
- HIDS入侵检测能力评估list
- 2022年Java应届生面试之Spring框架基础知识
- android视频编码格式,Android,ios平台上x264编码实时视频参数设置与优化 | 贝壳博客...
- 九龙证券|长线资金整体加仓 青睐能源科技材料等板块
- fastqc检验时不能执行java_fastqc对原始测序reads质控
- acwing1113 红与黑
- 如何入驻832优选平台
- mac之间迁移微信聊天记录
- ios手机编辑html转pdf文件,苹果手机居然能一键转换PDF文件?iPhone老司机才知道...