WebService--jax-spring集成
如果使用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集成的更多相关文章
- spring集成环境下的axis webservice的发布,调试
在spring集成的环境下,无论你是ssh集成,还是ssi集成的情况下,发布webservice往往在调用的时候会出错. 特别是,如果你是这个方式: 将webservice打aar包,放到tomcat ...
- 使用CXF与Spring集成实现RESTFul WebService
以下引用与网络中!!! 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存 ...
- Spring集成CXF发布WebService并在客户端调用
Spring集成CXF发布WebService 1.导入jar包 因为官方下载的包里面有其他版本的sprring包,全导入会产生版本冲突,所以去掉spring的部分,然后在项目根目录下新建了一个CXF ...
- axis2+spring集成
转载自:http://www.cnblogs.com/linjiqin/archive/2011/07/05/2098316.html 1.新建一个web project项目,最终工程目录如下: 注意 ...
- CXF WebService整合Spring
转自http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html 首先,CXF和spring整合需要准备如下jar包文件: 这边我是用Spr ...
- WebService-06-CXF与Spring集成
前言 自3月份到一家快递公司之后,就极少有时间来写博客了,进去的第一个周末就加班.做公司的开放平台,协助一个小伙伴写WebService接口,用的就是CXF.正好这个东西曾经使用过.如今快7月了,曾经 ...
- 使用Apache CXF和Spring集成创建Web Service(zz)
使用Apache CXF和Spring集成创建Web Service 您的评价: 还行 收藏该经验 1.创建HelloWorld 接口类 查看源码 打印? 1 package ...
- CXF框架介绍及Spring集成
1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...
- Spring集成axis2
1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 <?xml version="1.0" ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
随机推荐
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- html加载时事件触发顺序
一般情况下页面的响应加载顺序时,域名解析-加载html-加载js和css-加载图片等其他信息. jq ready()的方法就是Dom Ready,他的作用或者意义就是:在DOM加载完成后就可以可以对D ...
- Sqlserver中存储过程和游标的一些使用例子
/*带输入输出参数存储过程*/ ALTER PROCEDURE pro_test2 @userID INT, @maxUserID INT OUTPUT, @countUser INT OUTPUT ...
- Cookie同域,跨域单点登录
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. 单点登 ...
- DevOps之存储和数据库
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <数据(Data)> 了解有关数据部分.涉及存储及数据库的概念:知识与技能的层次( ...
- Akka 的Actor
从第一篇Akka笔记的介绍中,我们是从很高的高度去观察Akka工具箱中的Actors.在这篇笔记的第二篇,我们会看一下Actors中的消息部分.而且延续上一次的例子,我们还会使用同样的学生与老师的例子 ...
- java 集合之实现类ArrayList 和 LinkedList
List 的方法列表 方法名 功能说明 ArrayList() 构造方法,用于创建一个空的数组列表 add(E e) 将指定的元素添加到此列表的尾部 get(int index) 返回此列表中指定位置 ...
- NopCommerce 1. NopCommerce Application_Start启动过程
这里简单介绍整个启动过程,其他具体的后续讲解 从Application_Start中执行开始,一开始执行EngineContext.Initialize(false); EngineContext 是 ...
- Java常用类(一)String类详解
前言 在我们开发中经常会用到很多的常用的工具类,这里做一个总结.他们有很多的方法都是我们经常要用到的.所以我们一定要把它好好的掌握起来! 一.String简介 1.1.String(字符串常量)概述 ...
- elasticsearch+kibana+metricbeat安装部署方法
elasticsearch+kibana+metricbeat安装部署方法 本文是elasticsearch + kibana + metricbeat,没有涉及到logstash部分.通过beat收 ...