如果使用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. Two Sum IV - Input is a BST

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  2. eclipse建立一个jsp项目遇到的问题及解决

    打开eclipse  在workplace 区域空白处,右键 填写好Project name,之后,点击finished 即可. 选中webcontent,新建一个文件夹,并新建一个jsp 文件 新建 ...

  3. Linux用户和文件权限管理

    本文为原创文章,转载请标明出处 目录 用户管理 系统用户文件 添加用户 useradd 设置用户密码 passwd 删除用户 userdel 用户管理 usermod 用户组管理 系统用户组文件 添加 ...

  4. 浅析php curl_multi_*系列函数进行批量http请求

    何起: 一系列 数量很大 数据不热 还希望被蜘蛛大量抓取的页面,在蜘蛛抓取高峰时,响应时间会被拉得很高. 前人做了这样一个事儿:页面分3块,用3个内部接口提供,入口文件用curl_multi_*系列函 ...

  5. List之Union(),Intersect(),Except() 即并集,交集,差集运算。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 关于width与padding

    http://blog.csdn.net/yaoyuan_difang/article/details/24735529

  7. JAVA几种常见的编码格式(转)

    简介 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Jav ...

  8. python爬虫之爬取百度图片

    ##author:wuhao##爬取指定页码的图片,如果需要爬取某一类的所有图片,整体框架不变,但需要另作分析#import urllib.requestimport urllib.parseimpo ...

  9. PHP Server Nginx 安装

    1. PHP 安装: http://jingyan.baidu.com/article/b2c186c8f16d05c46ef6ff3c.html PHP 问题: http://www.cnblogs ...

  10. 如何使用 C# 爬虫获得专栏博客更新排行

    昨天,梦姐问我们,她存在一个任务,找到 关注数排行100 和 浏览量排行100 的专栏博客,在2017年还有更新的专栏. 梦姐说他要出去一趟,M大神在吃饭,于是我估算时间,只有半个钟. 整理一下:半个 ...