如果使用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. Monit : 开源监控工具介绍

    · Monit 简介 Monit是一个轻量级(500KB)跨平台的用来监控Unix/linux系统的开源工具.部署简单,并且不依赖任何第三方程序.插件或者库. Monit可以监控服务器进程.文件.文件 ...

  2. java数据库编程之DAO模式

    第八章:DAO模式 8.1:JDBC封装 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据, 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象, ...

  3. UpdatePanel控件的使用和局部刷新

    http://www.cnblogs.com/baiefjg/archive/2009/06/14/1502813.html

  4. Echarts数据可视化visualMap,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  5. jQuery Mobile事件,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) jQuery Mobile事件全解 jQuery Mobile 所有class选项 jQuery Mobile 所有data-*选项 jQuery Mobile事件 ...

  6. Linux上的文件搜索

    locate 基础了解 在centos7上默认没有locate命令,需要先手动安装.安装步骤:http://www.cnblogs.com/feanmy/p/7676717.html locate命令 ...

  7. Akka 的Actor

    从第一篇Akka笔记的介绍中,我们是从很高的高度去观察Akka工具箱中的Actors.在这篇笔记的第二篇,我们会看一下Actors中的消息部分.而且延续上一次的例子,我们还会使用同样的学生与老师的例子 ...

  8. 【特效】页面滚动到相应位置运行css3动画

    请到我的个人博客网站上浏览此文章,欢迎评论和建议. 文章链接:http://www.xiaoxianworld.com/archives/87 现在css3动画很常见了,实际项目中经常应用,特别是那种 ...

  9. Nginx配置文件中文详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  10. 当谈到 GitLab CI 的时候,我们都该聊些什么(下篇)

    上篇主要介绍了 GitLab WorkFlow 以及 CI/CD 做的事情,并且详细分析 GitLab CI 跟 Runner 信息交互是如何进行的.接下来将为大家讲解 Executor 的实现,再通 ...