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的更多相关文章

  1. 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 ...

  2. SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset

    SSl:Secure Sockets Layer 安全套接层 TLS:Transport Layer Security传输层安全 是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层 ...

  3. 【转】@javax.ws.rs Webservice注解

    用于webservice. 1.路径 @javax.ws.rs.Path 标识要请求的资源类或资源方法的uri路径. 例,@Path("animal"),表示下一层路径是anima ...

  4. 解决 jersey javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)

    检查是否Jar冲突 保留一个jersey-server-*.jar

  5. 使用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 ...

  6. 所有javax包

    所有jar包 > javax javax 下载 javax jar 包 本站下载镜像: javax-jmi-model.jar.zip javax-jmi-reflect.jar.zip jav ...

  7. WebService基础入门 CXF(WS + RS)

    一.基本介绍 Web Services是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作.它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换 ...

  8. 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 ...

  9. 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta

    从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta 目录 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Jav ...

随机推荐

  1. find查找文件

    linux下最强大的搜索命令为”find“. 它的格式为”find <指定目录> <指定条件> <指定动作>“: 比如使用find命令搜索在根目录下的所有inter ...

  2. 《机器学习实战》学习笔记第九章 —— 决策树之CART算法

    相关博文: <机器学习实战>学习笔记第三章 —— 决策树 主要内容: 一.CART算法简介 二.分类树 三.回归树 四.构建回归树 五.回归树的剪枝 六.模型树 七.树回归与标准回归的比较 ...

  3. codeforces 60B bfs

    题意:给出一个六面体分为k层,每层n行m列,每个小立方体有'.'(空)与'#'(障碍)的状态,第一层某个空的位置有一个水龙头,水流每次往六个方向流动(...).最少时间水流能把立方体空的部分填满. 思 ...

  4. Spring中如何动态注入Bean实例教程

    前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Be ...

  5. LUM使用常规命令

    查看日志 tail -f /var/log/messages LUM使用常规命令再列出一下######------ 软件操作方法:* 关闭LUM及所有组件:lu-stop* 启动LUM及所有组件:lu ...

  6. Python快速学习-基础语法

  7. 分享知识-快乐自己:Shiro 退出登陆清空缓存实现

    shiro是一个被广泛使用的安全层框架,通过xml配置方式与spring无缝对接,用户的登陆/退出/权限控制/Cookie等管理系统基础功能交给shiro来管理. 一般,在JavaWEB管理平台系统时 ...

  8. 【Selenium】Option加载用户配置,Chrom命令行参数

    about:version - 显示当前版本 about:memory - 显示本机浏览器内存使用状况 about:plugins - 显示已安装插件 about:histograms - 显示历史记 ...

  9. Git_错误_01_failed to push some refs to 'git@github.com

    在使用git 对源代码进行push到gitHub时可能会出错,信息如下 此时很多人会尝试下面的命令把当前分支代码上传到master分支上. $ git push -u origin master 但依 ...

  10. Java_异常_01_org.apache.commons.lang.exception.NestableRuntimeException

    异常信息: The type org.apache.commons.lang.exception.NestableRuntimeException cannot be resolved. It is ...