如果使用javax.jws内容编写webservice,则只能通过将程序打成jar包的形式运行,如果要想通过web容器进行发布,则需要使用其他webservice框架。下面介绍jaxws与spring集成配置过程。

1,导入jar包,jaxws相关,spring相关:在我的测试程序中使用到的相关jar包如下,根据自己的需要对spring的jar进行增减。

  

  

2,创建webservice接口(红色部分为自定义内容,根据实际情况更改):

    

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name = "CopSecWebService", targetNamespace = "http://ws.copsec.com/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface CopsecWsServiceItf {
/**
* 获取用户对象
* @param userid
* @return
* returns testjws.client.WsUser
*/
@WebMethod
public String getUser(
@WebParam(name = "userid", partName = "userid")
String userid);

}

3,实现webservice接口(该文件使用spring注解配置):

import javax.jws.WebService;
import org.springframework.stereotype.Component;


@WebService(endpointInterface="com.copsec.ws.CopsecWsServiceItf",
serviceName="CopSecWebService",
portName="CopSecWebServicePort",
targetNamespace="http://ws.copsec.com/")
//该对象交由spring管理
@Component("copsecWsServiceImpl")
public class CopsecWsServiceImpl implements CopsecWsServiceItf{

public String getUser(String id) {
return "say hi "+id;
}
}

4,编辑application.xml文件

  1)在<beans>标签当中添加对应的应用,对应的schema应用。我的项目中<beans>的配置如下: 

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://jax-ws.dev.java.net/spring/core
http://jax-ws.dev.java.net/spring/core.xsd
http://jax-ws.dev.java.net/spring/servlet
http://jax-ws.dev.java.net/spring/servlet.xsd">

  2) 配置webservice 

<context:annotation-config/> <!--由于使用注解方式,所以配置-->
<context:component-scan base-package="com.copsec"/> <!--配置扫描包的位置-->
<wss:binding url="/jaxws-spring">
<wss:service>
<ws:service bean="#copsecWsServiceImpl"></ws:service> <!-- 此处引用的bean前务必加上"#"号标识-->
</wss:service>
</wss:binding>

5, 修改web.xml:需增加的内容如下(基于servlet,java net):

  

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springWsServlet</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>springWsServlet</servlet-name>
<url-pattern>/jaxws-spring</url-pattern>
</servlet-mapping>

 以上配置过程完成后,webservice就可部署到web容器进行发布,测试使用的是tomcat服务器,通过http://localhost:8090/JAXWJS/jaxws-spring访问,内容如下:

点击wsdl可看到如下内容:

由于jaxws也是基于java .net,所以他的调用方式和使用非继承的调用方式相同。下面几种不同的调用方式,可根据自己的需求进行选择:

在此之前也需要把webservice接口文件导出到本地(使用wsimport导出即可),并下载wsdl到本带。

public class Main {

static String wsdlLocation = "http://localhost:8090/JAXWJS/jaxws-spring?wsdl";
static String wsdlFileLocation = "file:D:\\service\\com\\jaxws\\service\\service.wsdl";
static String nameSpaces="http://ws.copsec.com/";
static String serviceName = "CopSecWebService";
static String servicePort = "CopSecWebServicePort";
public static void main(String[] args) {

//使用soap方式调用,才能通过hanlder拦截到soap请求
System.out.println(soapInvoke());

//System.out.println(PRCinvoke());

//System.out.println(serviceInvoke());
}
//通过rpc方式调用
public static String PRCinvoke(){

String result = null;
try {
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service service = serviceFactory.createService(new URL(wsdlFileLocation), new QName(nameSpaces,

serviceName));

CopSecWebService myProxyItf = (CopSecWebService) service.getPort(new QName(nameSpaces,
servicePort), CopSecWebService.class);

result = myProxyItf.getUser("huyaozhong");
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return result;
}

public static String soapInvoke(){

CopSecWebService_Service service;
String result = null;
try {
service = new CopSecWebService_Service(new URL(wsdlFileLocation));

CopSecWebService serviceItf = service.getCopSecWebServicePort();

result = serviceItf.getUser("test");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

public static String serviceInvoke(){

javax.xml.ws.Service service;
String result = null;
try {
service = javax.xml.ws.Service.create(new URL(wsdlFileLocation),new QName(nameSpaces, serviceName));
CopSecWebService proxy = service.getPort(CopSecWebService.class);
result = proxy.getUser("lalalal");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}

jaxws-spring集成过程大致如上。

WebService--jax-spring集成的更多相关文章

  1. spring集成环境下的axis webservice的发布,调试

    在spring集成的环境下,无论你是ssh集成,还是ssi集成的情况下,发布webservice往往在调用的时候会出错. 特别是,如果你是这个方式: 将webservice打aar包,放到tomcat ...

  2. 使用CXF与Spring集成实现RESTFul WebService

    以下引用与网络中!!!     一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存 ...

  3. Spring集成CXF发布WebService并在客户端调用

    Spring集成CXF发布WebService 1.导入jar包 因为官方下载的包里面有其他版本的sprring包,全导入会产生版本冲突,所以去掉spring的部分,然后在项目根目录下新建了一个CXF ...

  4. axis2+spring集成

    转载自:http://www.cnblogs.com/linjiqin/archive/2011/07/05/2098316.html 1.新建一个web project项目,最终工程目录如下: 注意 ...

  5. CXF WebService整合Spring

    转自http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html 首先,CXF和spring整合需要准备如下jar包文件: 这边我是用Spr ...

  6. WebService-06-CXF与Spring集成

    前言 自3月份到一家快递公司之后,就极少有时间来写博客了,进去的第一个周末就加班.做公司的开放平台,协助一个小伙伴写WebService接口,用的就是CXF.正好这个东西曾经使用过.如今快7月了,曾经 ...

  7. 使用Apache CXF和Spring集成创建Web Service(zz)

    使用Apache CXF和Spring集成创建Web Service 您的评价:       还行  收藏该经验       1.创建HelloWorld 接口类 查看源码 打印? 1 package ...

  8. CXF框架介绍及Spring集成

    1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...

  9. Spring集成axis2

    1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 <?xml version="1.0" ...

  10. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

随机推荐

  1. ClassLoader类加载机制&&JVM内存管理

    一.ClassLoader类加载机制 在java中类加载是遵循委派双亲加载的:通过调用loadClass方法逐级往上传递委派加载请求,当找不到父ClassLoader时调用其findClass方法尝试 ...

  2. 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

    如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 #1:前提准备 1.1 首先请确认你的电脑是windows10专业版或企业版,只有这 ...

  3. httpd网页身份认证

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  4. python之路第二篇(基础篇)

    入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...

  5. 开源纯C#工控网关+组态软件(三)加入一个新驱动:西门子S7

    一.   引子 首先感谢博客园:第一篇文章.第一个开源项目,算是旗开得胜.可以看到,项目大部分流量来自于博客园,码农乐园,名不虚传^^. 园友给了我很多支持,并提出了很好的改进意见.现加入屏幕分辨率自 ...

  6. jdk8与jdk9的共存

    以前安装JDK,需要手动配置环境变量.JDK8多了自动配置环境变量,所以可以不用手动配置. 如果我已经装了JDK8,还想再装一个JDK9,安装完,自动配置的环境变量会指向JDK9版本. 解决方法 删除 ...

  7. 分页查询不知你是否真正的懂和PHP的正则的应用和一些性能优化

    一.不废话太多  直接进入例子. 1  问题: 有一张收藏表,里面存储的是用户和图书ID.数据量为1亿.现在要求分页获取所有用户ID(不重复),写下你的sql语句.   表结构大致如下:       ...

  8. C#基础之转换

    C#中一共有两种转换方式,隐式转换和显示转换 隐式转换:就是不需要声明就能进行的转换,通俗来说就是小范围内的数据类型转大范围数据类型 显示转换:就是通常说的强制转换,需要在代码中写明要的数据类型.通俗 ...

  9. UVa12100,Printer Queue

    水题,1A过的 数据才100,o(n^3)都能过,感觉用优先队列来做挺麻烦的,直接暴力就可以了,模拟的队列,没用stl #include <iostream> #include <c ...

  10. (转)java内存泄漏的定位与分析

    转自:http://blog.csdn.net/x_i_y_u_e/article/details/51137492 1.为什么会发生内存泄漏 java 如何检测内在泄漏呢?我们需要一些工具进行检测, ...