Javax ws 01
1 EndPoint发布服务
package com.gosaint.provider; import javax.jws.WebService; /**
* @Authgor: gosaint
* @Description:
* @Date Created in 10:24 2018/1/8
* @Modified By:
*/
@WebService
public interface Calculator { public int add(int a, int b); public int multi(int a, int b);
}
@WebService注解声明了该接口是一个webService接口。然后我们来写该接口的实现类
package com.gosaint.provider; import javax.jws.WebService; /**
* @Authgor: gosaint
* @Description:
* @Date Created in 10:25 2018/1/8
* @Modified By:
*/
@WebService(endpointInterface = "com.gosaint.provider.Calculator")
public class CalculatorImpl implements Calculator {
@Override
public int add(int a, int b) {
return a+b;
} @Override
public int multi(int a, int b) {
return a*b;
}
public int minus(int a, int b) {
return a - b;
}
}
在该类中,实现了接口Calculator.覆盖其中的方法,并且我们自定义mins()方法,@WebService(endpointInterface="com.gosaint.Calculator")该主注解的作用也是声明该类是一个WebService接口。而且该服务的接口是Calcluator接口。后面的是该接口的全限定名称。
此时我们就可以发布服务了。
package com.gosaint.provider; import javax.xml.ws.Endpoint; /**
* @Authgor: gosaint
* @Description:
* @Date Created in 10:27 2018/1/8
* @Modified By:
*/
// 服务发布
public class Server {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8088/calculator", new CalculatorImpl());
}
}
publish()方法中的第一个参数就是发布服务的地址,后面一个参数就是服务的实现类。当服务发布成功后就可以去浏览器中进行访问:http://localhost:8088/calculator?wsdl
当出现下面所示的类似的内容时则证明服务发布成功了。

2 客户端的调用
package com.gosaint.provider; import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL; /**
* @Authgor: gosaint
* @Description:
* @Date Created in 10:31 2018/1/8
* @Modified By:
*/
public class Client {
public static void main(String[] args) throws Exception{
// nameSpace这里需要包名倒写
QName qName=new QName("http://provider.gosaint.com/",
"CalculatorImplService");
URL url = new URL("http://localhost:8088/calculator?wsdl");
Service service=Service.create(url,qName);
Calculator port = service.getPort(Calculator.class);
System.out.println(port.add(3,9));
}
}
在这里客户端就可以直接对该接口实现调用了。QName对象中,要注意两个参数的名称。第一个参数应该是http://接口的包名倒写。第二个参数是服务的名称。这个可以在发布服务时生成的xml文件中获取。
之后是创建服务,获取接口,调用方法。
<service name="CalculatorImplService">
<port name="CalculatorImplPort" binding="tns:CalculatorImplPortBinding">
<soap:address location="http://localhost:8088/calculator"/>
</port>
</service>
测试结果:12
3 客户端代码的生成(利用Java自身的wsdl工具)
只需要打开CMD输入如下的命令就能生成对应的文件,我在这里直接生成在桌面上,具体生成在指定的文件下或者包下的参数大家可以去自行百度。
wsimport -keep http://localhost:8088/calculator?wsdl


此时就可以直接调用这里面的一些类或者方法了。
Javax ws 01的更多相关文章
- The type javax.ws.rs.core.MediaType cannot be resolved. It is indirectly referenced from required .class files
看到了http://stackoverflow.com/questions/5547162/eclipse-error-indirectly-referenced-from-required-clas ...
- SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset
SSl:Secure Sockets Layer 安全套接层 TLS:Transport Layer Security传输层安全 是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层 ...
- 【转】@javax.ws.rs Webservice注解
用于webservice. 1.路径 @javax.ws.rs.Path 标识要请求的资源类或资源方法的uri路径. 例,@Path("animal"),表示下一层路径是anima ...
- 解决 jersey javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
检查是否Jar冲突 保留一个jersey-server-*.jar
- 使用Grizzy+Jersey搭建一个RESTful框架()报错Exception in thread "main" java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
报错的类涉及UriBuilder,我搜索类发现, 这个类存在于两个包中,我在baidu的时候,也有人提到是jar包冲突,我就删除了 这个依赖,问题解决了. 环境搭建过程请见地址https://blog ...
- 所有javax包
所有jar包 > javax javax 下载 javax jar 包 本站下载镜像: javax-jmi-model.jar.zip javax-jmi-reflect.jar.zip jav ...
- WebService基础入门 CXF(WS + RS)
一.基本介绍 Web Services是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作.它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换 ...
- java 9 Spring Cloud @EnableEurekaServer javax.xml.bind.JAXBContext not present
java 9 Spring Cloud @EnableEurekaServer javax.xml.bind.JAXBContext not present jdk 8下面还可以正常启动,jdk9 ...
- 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta
从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta 目录 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Jav ...
随机推荐
- 请简单介绍一下Spring
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...
- 每天一个Linux命令(25)chgrp命令
chgrp命令用来改变文件或目录所属的用户组. (1)用法: 用法: chgrp [选项参数] [组] [文件] 或 chgrp [选项] 组文件... POSIX ...
- 【leetcode刷题笔记】Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题 ...
- 【leetcode刷题笔记】Add Binary
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- MySQL的进程状态
通过show processlist查看MySQL的进程状态,在State列上面的状态有如下这些: Analyzing线程对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE ).c ...
- Python 运算符(算术运算符(+,-,*,**,/,//),逻辑运算符(not , or ,and),比较运算符(>,<,>=,=<),复合运算符(+=,-=,*=,/=,**=,//=))
# 一.算术运算符(+,-,*,**, /, //, %) # 加法运算符+ print(1 + 2) # 字符串相连 ") # 重载 print([1,2] + [3,4]) # 幂运算* ...
- PostgreSQL基本操作
列出当前数据库所有表 \dt 列出表名 SELECT tablename FROM pg_tables; WHERE tablename NOT LIKE 'pg%' AND tablename NO ...
- Hive- 大数据仓库Hive
什么是 Hive? Hive 是由 FaceBook 开源用于解决少量数据结构化日志的数据统计.Hive是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询 ...
- R语言矩阵运算
R语言矩阵运算 主要包括以下内容:创建矩阵向量:矩阵加减,乘积:矩阵的逆:行列式的值:特征值与特征向量:QR分解:奇异值分解:广义逆:backsolve与fowardsolve函数:取矩阵的上下三角元 ...
- Redis命令参考之复制(Replication)
Redis 支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品. ...