spring集成cxf发布restful和soap接口

对于SOAP Webservice和Restful Webservice的选择问题,首先需要理解就是SOAP偏向于面向活动,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作 方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义。而REST强调面向资源,只要我们要操作的对象可以抽象为资源即可以使用REST架 构风格。

application-context-cxf.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.1.xsd
                        http://cxf.apache.org/jaxws
                        http://cxf.apache.org/schemas/jaxws.xsd
                        http://cxf.apache.org/jaxrs
                        http://cxf.apache.org/schemas/jaxrs.xsd">

     <import resource="classpath:META-INF/cxf/cxf.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

    <bean id="SpringContextUtil" class="com.sharp.slc.common.SpringContextUtil" />

    <!-- DeviceManager Service -->
    <!--
    <jaxws:endpoint id="devicemanager"
        implementor="com.sharp.slc.agent.purifier.webservice.impl.DeviceManagerServiceImpl"
        address="/DeviceManagerService" />
    -->
    <bean id="agentService"
        class="com.sharp.slc.agent.purifier.webservice.impl.AgentServiceImpl"/>

    <jaxws:server id="agentSOAPService"
        serviceClass="com.sharp.slc.agent.purifier.webservice.impl.AgentServiceImpl"
        address="/agentSOAPService">
        <jaxws:serviceBean>
            <ref bean="agentService"/>
        </jaxws:serviceBean>
    </jaxws:server>

    <bean id="agentServiceForTcp"
        class="com.sharp.slc.agent.purifier.webservice.impl.AgentServiceForTcpImpl"/>

    <jaxws:server id="agentSOAPServiceForTcp"
        serviceClass="com.sharp.slc.agent.purifier.webservice.impl.AgentServiceForTcpImpl"
        address="/agentSOAPServiceForTcp">
        <jaxws:serviceBean>
            <ref bean="agentServiceForTcp"/>
        </jaxws:serviceBean>
    </jaxws:server>

     <!-- HMS Server Service
    <jaxws:endpoint id="hms"
        implementor="com.sharp.slc.agent.purifier.webservice.impl.HMSServiceImpl"
        address="/HMSService" />
        -->

    <!--  agent CXF RESTful Publish -->
    <jaxrs:server id="agentServiceContainer" address="/agentWebService">
        <jaxrs:serviceBeans>
            <ref bean="agentWebBean" />
        </jaxrs:serviceBeans>
        <jaxrs:extensionMappings>
            <entry key="json" value="application/json" />
            <entry key="xml" value="application/xml" />
        </jaxrs:extensionMappings>
        <jaxrs:languageMappings>
               <entry key="en" value="en-gb"/>
        </jaxrs:languageMappings>
    </jaxrs:server>

    <bean id="agentWebBean"
        class="com.webservice.impl.ReceiveHMSDataImpl"/>

    <!-- WeChat client -->

    <!--
    <jaxws:client id="wechatClient"
        serviceClass="com.sharp.slc.wechat.webservice.WeChatInterface"
        address="http://localhost:8080/SharpCloudWeb/webservice/weChatService"/>
     -->

    <jaxws:client id="wechatClient"
        serviceClass="com.sharp.slc.wechat.webservice.WeChatInterface"
        address="${wechat.endpoint}"/>

    <jaxws:client id="tcpClient"
        serviceClass="com.sharp.slc.net.webservice.ITCPService"
        address="${tcpserver.endpoint}"/>

    <!--
    <bean id="weChat" class="com.sharp.slc.wechat.webservice.WeChat"
        factory-bean="weChatProxyFactory" factory-method="create" />

    <bean id="socketProxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value="com.sharp.slc.net.webservice.Socket" />
        <property name="address"
            value="http://localhost:8080/sharp-slc-net/SocketService" />
    </bean>
    -->

</beans>

IReceiveHMSData.java

package com.webservice;

import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

@Path("/receiveHMSServer")
@WebService
public interface IReceiveHMSData {

    /**
     * @param servletRequest
     * @param servletResponse
     * @return
     */
    @POST
    @Path("/notifyDeviceModification")
    @Produces({MediaType.APPLICATION_JSON })
    String notifyDeviceModification(@Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse);
 }

ReceiveHMSDataImpl.java

package com.webservice.impl;

@WebService(endpointInterface = "com.sharp.slc.sharpcloud.webservice.IReceiveHMSData")
public class ReceiveHMSDataImpl implements IReceiveHMSData {

	@POST
	@Path("/notifyDeviceModification")
	@Produces({ MediaType.APPLICATION_JSON })
	public String notifyDeviceModification(@Context HttpServletRequest request, @Context HttpServletResponse response) {
		return "";
	}
}

soap的接口代码

package com.sharp.slc.wechat.webservice;

import java.util.List;

import javax.jws.WebService;

@WebService
public interface WeChatInterface {
	/**
	 * 根据macAddress获取设备信息
	 *
	 * @param openId
	 * @return
	 */
	public void sendConnStatusToWeChat(List<String> openIdList, String deviceId, String status);

	/**
	 * 根据macAddress获取设备信息
	 *
	 * @param openIdList
	 * @param message
	 */
	public void sendTextMessageToWeChat(List<String> openIdList, String message);

	/**
	 * 根据macAddress获取设备信息
	 *
	 * @param openId
	 * @param deviceStatus
	 * @return
	 */
	public void sendDeviceStatusToWeChat(String openId, String deviceStatus);

	/**
	 * 发送绑定成功信息
	 *
	 * @param openId
	 * @param deviceId
	 * @return
	 */
	public void sendBindSuccessToWeChat(String openId, String deviceId);
}
时间: 2024-10-27 07:57:53

spring集成cxf发布restful和soap接口的相关文章

发布restful类型的接口

1.什么是restful,restful并不像之前的jaxws一样是SOA架构,rest是一种软件架构模式,只是一种风格,rest采用HTTP来进行传播, rest对于HTTP的好处在于 A.资源定位 更加准确的定位互联网资源,使用URL定位一个互联网资源: B.资源操作 利用http的GET , POST ,PUT,DELETE 来表示操作数据库的SELECT ,UPDATE,INSTER,DELETE, REST 方式一般要求URL中不要有动词,动词采用GET,POST,PUT,DELETE

So easy Webservice 8.spring整合CXF 发布WS

1.添加jar包(cxf的jar包中包含了spring的jar包),添加spring配置文件 2.web.xml中配置CXFServlet,过滤WS服务的地址 <!-- 配置CXFServlet,实现地址过滤的功能,项目启动时实例化 --> <servlet> <servlet-name>cxfServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFSer

Spring 集合cxf发布webservice

通过spring发布webservice接口 spring jar包+cxf jar Java包 以下文件缺少jar包需要自行去下载 项目结构 1.实体类 package com.test.entity; public class User { public User(String name, String pwd, String sex) { super(); this.name = name; this.pwd = pwd; this.sex = sex; } private String

myeclipse上spring+mybatis+axis2发布webservice接口的问题及个人实现的方式

前提: 这个月的突然一天,有个项目对接需要使用axis2发布的接口,这下难倒我了,毕竟之前我是连webservice接口都不知怎么发布的.后来从HelloWorld开始发布了第一个接口--sayHi();到这一步的时候都是很顺利的,唯独和axis2整合的时候,出现问题了,spring的dao层在axis2发布后的接口里,一直为null,貌似是spring一直没有被初始化,这期间我测试过按照正常流程来执行一个请求,是正确的,唯独和axis2整合后就不行了,在这测试的时间内,很痛苦,很痛苦,所有能想

WebService框架CXF实战一发布RESTFul服务(七)

JAX-RS概述 JAX-RS是Java提供用于开发RESTful Web服务基于注解(annotation)的API.JAX-RS旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用,避免了依赖第三方框架.同时JAX-RS使用POJO编程模型和基于注解的配置并集成JAXB,可以有效缩短REST应用的开发周期.JAX-RS只定义RESTful API,具体实现由第三方提供,如Jersey.Apache CXF等. JAX-RS包含近五十多个接口.注解和抽象类: ja

Spring 整合CXF 实现WebService(JAX-WS)

服务端创建项目 添加依赖 web.xml 配置CXFServlet <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="htt

Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法. 下面是项目的结构图: 1.Web Service发布项目 2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService package com.test.webservice; import javax.

基于Maven在Spring中集成CXF Web Service框架

引言: 在跨系统和跨平台的系统通信中,WebService是一个事实上的标准,其以平台无关性,获得了广泛的应用.本文将讲述如何基于Spring来集成CXF,并开发出第一个Hello World的应用. 1.  Web Service是什么? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web Service技术, 能使

开发基于CXF的 RESTful WebService web 项目 webservice发布

配置步骤 开发基于CXF的 RESTful WebService 1.创建Web项目并导入CXF的jar 2.在Web.xml中配置 CXFServlet <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-