`

Spring整合CXF,发布RSETful 风格WebService

 
阅读更多
    这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了。如果你对Spring整合CXF WebService不了解,具体你可以参看这两篇文章:

    http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html

    http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html

    如果你不了解restful风格的WebService,你可以参考:

    http://www.oracle.com/technetwork/articles/javase/index-137171.html

    SpringMVC对RESTful的支持:

    http://www.cnblogs.com/hoojo/archive/2011/06/10/2077422.html

    使用 Jersey框架,搭建RESTful WebService(这个也比较简单)

    http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/

    官方文档:http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e8

    其中,比较常用的RESTful框架就有Jersey、Spring REST、CXF RESTful,这些都可以很好的整合Spring框架,发布也相当的简单。且简单、易用、易上手,文档也比较丰富。

    开发环境:

    System:Windows

    JavaEE Server:tomcat6

    JavaSDK: jdk6+

    IDE:eclipse、MyEclipse 6.6

    

    开发依赖库:

    JDK6、 JavaEE5、CXF-2.3.3、Spring 3.0.4

    Email:hoojo_@126.com

    Blog:http://blog.csdn.net/IBM_hoojo

    http://hoojo.cnblogs.com/

    http://hoojo.blogjava.net

下面我们就接着http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html这篇文章,开始我们CXF RESTful WebService的旅程,enjoy~!^_*

准备工作

    首先,你需要添加相关的jar包
[img]
http://images.cnblogs.com/cnblogs_com/hoojo/201207/201207231653057347.png[/img]
其中,jsr331-api-1.1.1.jar是必须的,利用CXF发布REST服务得用到它,在cxf的lib库中可以找到这个jar。

下载地址:http://www.apache.org/dyn/closer.cgi?path=/cxf/2.3.11/apache-cxf-2.3.11.zip

其它的jar包都是非必须的!
JavaEntity

package com.hoo.entity;

 

import java.util.Map;

import javax.xml.bind.annotation.XmlRootElement;

 

/**

 * <b>function:</b> MapBean 封装Map集合元素

 * @author hoojo

 * @createDate 2012-7-20 下午01:22:31

 * @file MapBean.java

 * @package com.hoo.entity

 * @project CXFWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

@XmlRootElement

public class MapBean {

    private Map<String, User> map;

    

    //@XmlElement(type = User.class)

    public Map<String, User> getMap() {

        return map;

    }

    public void setMap(Map<String, User> map) {

        this.map = map;

    }

}

 

package com.hoo.entity;

 

import java.util.HashMap;

import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

 

/**

 * <b>function:</b> Users Entity

 * @author hoojo

 * @createDate 2011-3-18 上午09:27:31

 * @file Users.java

 * @package com.hoo.entity

 * @project CXFWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

@XmlRootElement(name = "UserInfos")

public class Users {

    private List<User> users;

    

    private User[] userArr;

    

    private HashMap<String, User> maps;

    

    

   // getter/setter

}

package com.hoo.entity;

 

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

 

/**

 * <b>function:</b>User Entity

 * @author hoojo

 * @createDate Dec 16, 2010 10:20:02 PM

 * @file User.java

 * @package com.hoo.entity

 * @project AxisWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

@XmlRootElement(name = "UserInfo")

public class User implements Serializable {

    private static final long serialVersionUID = 677484458789332877L;

    private int id;

    private String name;

    private String email;

    private String address;

    

    //getter/setter

    

    @Override

    public String toString() {

        return this.id + "#" + this.name + "#" + this.email + "#" + this.address;

    }

}

一、定义你的WebService的接口RESTSample.java,代码如下
package com.hoo.service;

 

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.Consumes;

import javax.ws.rs.DELETE;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.Context;

import javax.ws.rs.core.MediaType;

 

import com.hoo.entity.MapBean;

import com.hoo.entity.User;

import com.hoo.entity.Users;

 

 

/*

     注释(Annotation):在 javax.ws.rs.* 中定义,是 JAX-RS (JSR 311) 规范的一部分。 

    @Path:定义资源基 URI。由上下文根和主机名组成,资源标识符类似于 http://localhost:8080/RESTful/rest/hello。 

    @GET:这意味着以下方法可以响应 HTTP GET 方法。 

    @Produces:以纯文本方式定义响应内容 MIME 类型。

    

    @Context: 使用该注释注入上下文对象,比如 Request、Response、UriInfo、ServletContext 等。 

    @Path("{contact}"):这是 @Path 注释,与根路径 “/contacts” 结合形成子资源的 URI。 

    @PathParam("contact"):该注释将参数注入方法参数的路径,在本例中就是联系人 id。其他可用的注释有 @FormParam、@QueryParam 等。 

    @Produces:响应支持多个 MIME 类型。在本例和上一个示例中,APPLICATION/XML 将是默认的 MIME 类型。

 */

/**

 * <b>function:</b> CXF RESTful风格WebService

 * @author hoojo

 * @createDate 2012-7-20 下午01:23:04

 * @file RESTSampleSource.java

 * @package com.hoo.service

 * @project CXFWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

@Path(value = "/sample")

public interface RESTSample {

    

    @GET

    @Produces(MediaType.TEXT_PLAIN)

    public String doGet();

    

    @GET

    @Produces(MediaType.TEXT_PLAIN)

    @Path("/request/{param}")

    public String doRequest(@PathParam("param") String param, 

            @Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse);

    

    @GET

    @Path("/bean/{id}")

    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

    public User getBean(@PathParam("id") int id);

    

    @GET

    @Path("/list")

    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

    public Users getList();

    

    @GET

    @Path("/map")

    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

    public MapBean getMap();

    

    /*

        @Consumes:声明该方法使用 HTML FORM。 

        @FormParam:注入该方法的 HTML 属性确定的表单输入。 

        @Response.created(uri).build(): 构建新的 URI 用于新创建的联系人(/contacts/{id})并设置响应代码(201/created)。

        您可以使用 http://localhost:8080/Jersey/rest/contacts/<id> 访问新联系人

     */

    @POST

    @Path("/postData")

    public User postData(User user) throws IOException;

    

    @PUT

    @Path("/putData/{id}")

    @Consumes(MediaType.APPLICATION_XML)

    public User putData(@PathParam("id") int id, User user);

    

    @DELETE

    @Path("/removeData/{id}")

    public void deleteData(@PathParam("id") int id);

}


二、RESTSample接口的实现,这里我们只是简单的实现下,并不是涉及实际的具体业务

package com.hoo.service;

 

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.DELETE;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.PUT;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.Context;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Request;

import javax.ws.rs.core.UriInfo;

import com.hoo.entity.MapBean;

import com.hoo.entity.User;

import com.hoo.entity.Users;

 

 

/*

     注释(Annotation):在 javax.ws.rs.* 中定义,是 JAX-RS (JSR 311) 规范的一部分。 

    @Path:定义资源基 URI。由上下文根和主机名组成,资源标识符类似于 http://localhost:8080/RESTful/rest/hello。 

    @GET:这意味着以下方法可以响应 HTTP GET 方法。 

    @Produces:以纯文本方式定义响应内容 MIME 类型。

    

    @Context: 使用该注释注入上下文对象,比如 Request、Response、UriInfo、ServletContext 等。 

    @Path("{contact}"):这是 @Path 注释,与根路径 “/contacts” 结合形成子资源的 URI。 

    @PathParam("contact"):该注释将参数注入方法参数的路径,在本例中就是联系人 id。其他可用的注释有 @FormParam、@QueryParam 等。 

    @Produces:响应支持多个 MIME 类型。在本例和上一个示例中,APPLICATION/XML 将是默认的 MIME 类型。

 */

/**

 * <b>function:</b> CXF RESTful风格WebService

 * @author hoojo

 * @createDate 2012-7-20 下午01:23:04

 * @file RESTSampleSource.java

 * @package com.hoo.service

 * @project CXFWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

@Path(value = "/sample")

public class RESTSampleSource implements RESTSample {

    

    @Context

    private UriInfo uriInfo;

    

    @Context

    private Request request;

 

    

    @GET

    @Produces(MediaType.TEXT_PLAIN)

    public String doGet() {

        return "this is get rest request";

    }

    

    @GET

    @Produces(MediaType.TEXT_PLAIN)

    @Path("/request/{param}")

    public String doRequest(@PathParam("param") String param, 

            @Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse) {

        System.out.println(servletRequest);

        System.out.println(servletResponse);

        System.out.println(servletRequest.getParameter("param"));

        System.out.println(servletRequest.getContentType());

        System.out.println(servletResponse.getCharacterEncoding());

        System.out.println(servletResponse.getContentType());

        return "success";

    }

    

    @GET

    @Path("/bean/{id}")

    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

    public User getBean(@PathParam("id") int id) {

        System.out.println("####getBean#####");

        System.out.println("id:" + id);

        System.out.println("Method:" + request.getMethod());

        System.out.println("uri:" + uriInfo.getPath());

        System.out.println(uriInfo.getPathParameters());

        

        User user = new User();

        user.setId(id);

        user.setName("JojO");

        return user;

    }

    

    @GET

    @Path("/list")

    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })

    public Users getList() {

        System.out.println("####getList#####");

        System.out.println("Method:" + request.getMethod());

        System.out.println("uri:" + uriInfo.getPath());

        System.out.println(uriInfo.getPathParameters());

        

        List<User> list = new ArrayList<User>();

        User user = null;

        for (int i = 0; i < 4;i ++) {

            user = new User();

            user.setId(i);

            user.setName("JojO-" + i);

            list.add(user);

        }

        Users users = new Users();

        users.setUsers(list);

        return users;

    }

    

    @GET

    @Path("/map")

    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

    public MapBean getMap() {

        System.out.println("####getMap#####");

        System.out.println("Method:" + request.getMethod());

        System.out.println("uri:" + uriInfo.getPath());

        System.out.println(uriInfo.getPathParameters());

        

        Map<String, User> map = new HashMap<String, User>();

        User user = null;

        for (int i = 0; i < 4;i ++) {

            user = new User();

            user.setId(i);

            user.setName("JojO-" + i);

            map.put("key-" + i, user);

        }

        MapBean bean = new MapBean();

        bean.setMap(map);

        return bean;

    }    

    

    /*

        @Consumes:声明该方法使用 HTML FORM。 

        @FormParam:注入该方法的 HTML 属性确定的表单输入。 

        @Response.created(uri).build(): 构建新的 URI 用于新创建的联系人(/contacts/{id})并设置响应代码(201/created)。

        您可以使用 http://localhost:8080/Jersey/rest/contacts/<id> 访问新联系人

     */

    @POST

    @Path("/postData")

    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

    public User postData(User user) throws IOException {

        System.out.println(user);

        user.setName("jojo##12321321");

        return user;

    } 

    

    @PUT

    @Path("/putData/{id}")

    @Produces({ MediaType.APPLICATION_XML })

    public User putData(@PathParam("id") int id, User user) {

        System.out.println("#####putData#####");

        System.out.println(user);

        user.setId(id);

        user.setAddress("hoojo#gz");

        user.setEmail("hoojo_@126.com");

        user.setName("hoojo");

        System.out.println(user);

        return user;

    }

    

    @DELETE

    @Path("/removeData/{id}")

    public void deleteData(@PathParam("id") int id) {

        System.out.println("#######deleteData#######" + id);

    }

}

三、配置我们的WebService,修改applicationContext-server.xml。这里主要是添加jaxrs标签的支持,修改头部文件如下:
<?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-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.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">

特别注意上面加粗带下划线的部分,这是新增加的配置。我们发布restful WebService需要用到它。
然后在配置文件中添加如下配置

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

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

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

<bean id="restSample" class="com.hoo.service.RESTSampleSource"/>

<!-- 这里的地址很重要,客户端需要通过这个地址来访问WebService -->

<jaxrs:server id="restServiceContainer" address="/rest">

    <jaxrs:serviceBeans>

        <ref bean="restSample" />

    </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>

这样服务器端就完成了CXF RESTful WebService的发布,启动你的tomcat。然后在浏览器中服务地址:http://localhost:8000/CXFWebService/ (其实这里请求的是CXFServlet,你可以看看上一篇Spring整合CXF文章的web.xml的配置)

你就可以看到我们这里刚刚发布的RESTSample rest的WebService

你也可以看看里面的xml,也就是WebService的wsdl文件内容。我们找一个GET方式的WebService的方法,在浏览器中调用一下试试

http://localhost:8000/CXFWebService/rest/sample/bean/123

这个url对应到下面这个方法

@GET

@Path("/bean/{id}")

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

public User getBean(@PathParam("id") int id)

结果如下


四、编写客户端代码,调用RESTful WebService
package com.hoo.client;

 

import java.io.IOException;

import javax.ws.rs.core.MediaType;

import org.apache.cxf.jaxrs.client.WebClient;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.hoo.entity.MapBean;

import com.hoo.entity.User;

import com.hoo.entity.Users;

import com.hoo.service.RESTSample;

 

/**

 * <b>function:</b> RESTful风格WebService

 * @author hoojo

 * @createDate 2012-7-20 下午03:31:03

 * @file RSETServiceClient.java

 * @package com.hoo.client

 * @project CXFWebService

 * @blog http://blog.csdn.net/IBM_hoojo

 * @email hoojo_@126.com

 * @version 1.0

 */

public class RSETServiceClient {

 

    private static WebClient client;

    

    @Before

    public void init() {

        // 手动创建webClient对象,注意这里的地址是发布的那个/rest地址

        //String url = "http://localhost:8000/CXFWebService/rest/";

        //client = WebClient.create(url);

 

        // 从Spring Ioc容器中拿webClient对象

        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");

        client = ctx.getBean("webClient", WebClient.class);

    }

    

    @After

    public void destory(){

    }

    

    @Test

    public void testGet() {

        System.out.println(client.path("sample").accept(MediaType.TEXT_PLAIN).get(String.class));

    }

    

    @Test

    public void testRequest() {

        System.out.println(client.path("sample/request/234234").accept(MediaType.TEXT_PLAIN).get(String.class));

    }

    

    @Test

    public void testBean() {

        User user = client.path("sample/bean/{id}", 25).accept(MediaType.APPLICATION_XML).get(User.class);

        System.out.println(user);

    }

    

    @Test

    public void testList() {

        System.out.println(client.path("sample/list").accept(MediaType.APPLICATION_XML).get(Users.class).getUsers());

    }

    

    @Test

    public void testMap() {

        System.out.println(client.path("sample/map").accept(MediaType.APPLICATION_XML).get(MapBean.class).getMap());

    }

    

    @Test

    public void testDeleteData() {

        client.path("sample/removeData/23").delete();

    }

    

    @Test

    public void testPostData() {

        User user = new User();

        user.setId(21432134);

        user.setAddress("hoojo#gz");

        user.setEmail("hoojo_@126.com");

        user.setName("hoojo");

        System.out.println(client.path("sample/postData").accept(MediaType.APPLICATION_XML).post(user, User.class));

    }

    

    @Test

    public void testPutData() {

        User user = new User();

        user.setId(21432134);

        System.out.println(client.path("sample/putData/1").accept(MediaType.APPLICATION_XML).put(user).getEntity());

    }

}

如果你喜欢用Spring的方式,还需要在applicationContext-client.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:xsi="http://www.w3.org/2001/XMLSchema-instance"

    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.0.xsd

    http://cxf.apache.org/jaxws 

    http://cxf.apache.org/schemas/jaxws.xsd">

    

    <bean id="webClient" class="org.apache.cxf.jaxrs.client.WebClient" factory-method="create">

        <constructor-arg type="java.lang.String" value="http://localhost:8000/CXFWebService/rest/" />

    </bean>

    

</beans>

这种是利用WebClient对象来调用WebService,还有一种方法也可以调用WebService,代码如下:

// 手动创建

//RESTSample sample = JAXRSClientFactory.create("http://localhost:8000/CXFWebService/rest", RESTSample.class);

 

// 从Spring Ioc容器中拿webClient对象

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");

RESTSample sample = ctx.getBean("restSampleBean", RESTSample.class);

 

System.out.println(sample);

 

System.out.println(sample.doGet());

//System.out.println(sample.doRequest("haha", null, null));

System.out.println(sample.getBean(22));

System.out.println(sample.getList());

System.out.println(sample.getMap().getMap());

User user = new User();

user.setId(21432134);

user.setAddress("hoojo#gz");

user.setEmail("hoojo_@126.com");

user.setName("hoojo");

System.out.println(sample.postData(user));

System.out.println(sample.putData(111, user));

sample.deleteData(2);


这种方式相对比WebClient要简单,直接使用接口中的方法即可。同样如果你要整合到Spring可以在applicationContext-client.xml中增加配置如下:

<bean id="restSampleBean" class="org.apache.cxf.jaxrs.client.JAXRSClientFactory" factory-method="create">

    <constructor-arg type="java.lang.String" value="http://localhost:8000/CXFWebService/rest/" />

    <constructor-arg type="java.lang.Class" value="com.hoo.service.RESTSample" />
</bean>

执行以上方法可以看到控制台打印结果如下:

client console

org.apache.cxf.jaxrs.client.ClientProxyImpl@1cf7491

this is get rest request

22#JojO#null#null

com.hoo.entity.Users@16eb6bc

{key-0=0#JojO-0#null#null, key-1=1#JojO-1#null#null, key-2=2#JojO-2#null#null, key-3=3#JojO-3#null#null}

21432134#jojo##12321321#hoojo_@126.com#hoojo#gz

111#hoojo#hoojo_@126.com#hoojo#gz

 

server console

####getBean#####

id:22

Method:GET

uri:sample/bean/22

{id=[22]}

####getList#####

Method:GET

uri:sample/list

{}

####getMap#####

Method:GET

uri:sample/map

{}

21432134#hoojo#hoojo_@126.com#hoojo#gz

#####putData#####

21432134#hoojo#hoojo_@126.com#hoojo#gz

111#hoojo#hoojo_@126.com#hoojo#gz

#######deleteData#######2

就这样,整合restful WebService成功。



分享到:
评论

相关推荐

    Spring整合CXF发布服务

    当我们需要在Spring环境中发布Web服务时,Spring与CXF的整合就显得尤为重要。本篇文章将深入探讨如何实现Spring与CXF的整合,以便发布服务。 1. **Spring与CXF整合的基础** 在整合Spring和CXF之前,我们需要确保...

    cxf+spring发布webservice和restservice

    本项目“cxf+spring发布webservice和restservice”专注于利用Apache CXF框架与Spring框架结合,实现这两种服务的发布。Apache CXF是一个开源的、功能丰富的服务栈,它使得开发者能够轻松地构建和部署SOAP和RESTful ...

    Spring整合CXF步骤,Spring实现webService,spring整合WebService

    总的来说,Spring整合CXF的步骤主要包括配置CXF,定义服务接口和实现,然后在Spring中发布这些服务。通过这样的整合,你可以享受到Spring带来的便利,同时利用CXF的强大功能来构建高质量的Web服务。在实际开发中,还...

    Spring+CXF+tomcat开发webservice

    这个项目对于初学者来说,是一个很好的实践平台,可以帮助理解Web服务的工作原理,掌握Spring、CXF和Tomcat的整合使用。同时,通过实际操作,还能加深对依赖注入、服务发布和消费等概念的理解。在实际项目中,这种...

    使用Eclipse+Maven+Spring+CXF构建的WebService服务

    Web项目中基于Maven与Spring整合的WebService之cxf的实现⬇️ 详情请参考如下链接: https://locqi.github.io/locqi.com/2018/09/05/Eclipse+Maven+Spring+CXF-create-WebService/

    用CXF开发RESTful风格WebService

    用CXF开发RESTful风格WebService.doc

    Spring+CXF 发布WebService服务

    本文将深入探讨如何使用Spring和CXF来发布WebService服务。 首先,Spring是一个开源的Java平台,它提供了全面的编程和配置模型,用于简化企业级应用的开发。Spring框架的核心特性包括依赖注入、面向切面编程(AOP)...

    spring整合CXF开发webService所需jar包

    - Spring整合CXF的相关库:cxf-spring-boot-starter-jaxws.jar、cxf-spring-boot-autoconfigure.jar等,这些jar文件帮助Spring容器自动配置CXF相关的bean。 - 其他依赖库:如wsdl4j.jar、jaxb-api.jar、jaxb-impl....

    springboot整合CXF发布webservice和客户端调用

    SpringBoot整合CXF是将流行的Java Web服务框架CXF与SpringBoot轻量级框架结合,以便更方便地创建和消费Web服务。这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务...

    webservice之Spring整合CXF

    WebService小白学习 之 Spring整合CXF,添加拦截器。 博客学习地址:https://blog.csdn.net/qq_37902949/article/details/81262826

    spring集成cxf,server发布webservice,client调用webservice

    使用spring集成cxf,在两个web project里发布及调用webservice server端使用spring+springmvc+mybatis+cxf,client端使用struts2+spring+hibernate+cxf 两个工程均为myeclipse project,包含所有除myeclipse自带以外...

    spring整合CXF开发webService接口所需的全部jar包

    - **服务发布**:使用Spring的`@WebService`注解和`JaxWsServerFactoryBean`,可以在Spring容器中发布Web服务。 - **服务消费**:利用`JaxWsProxyFactoryBean`,可以方便地在Spring中创建Web服务客户端。 4. **...

    spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

    Spring、CXF和RESTful是构建Web服务的重要技术。本文将深入探讨如何使用这些技术来发布Web服务,特别是涉及复杂对象如List、Map及List的传递。 首先,Spring框架是一个Java企业级应用开发的强大工具,它提供了众多...

    spring整合cxf发布webservice实例

    将下载的demo(包括serviceserverdemo及serviceclientdemo,bat文件在serviceclientdemo的src下)导入eclipse即可运行使用,编译时可能需要修改jdk版本,如果导入有错,可新建web项目,按所下载demo的结构搭建即可,...

    ibatis+spring+cxf+mysql搭建webservice的客户端

    ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729

    spring整合cxf 实现webservice

    【Spring 整合 CXF 实现 WebService】是将 Apache CXF 框架与 Spring 框架结合,以创建、部署和管理 WebService 的一种方法。Apache CXF 是一个开源服务框架,它允许开发者创建和消费各种 Web 服务,而 Spring 提供...

    spring+cxf编写简单的webservice接口

    标题 "spring+cxf编写简单的webservice接口" 涉及的是使用Spring框架和Apache CXF库来创建Web服务接口的过程。这是一个常见的技术栈,用于构建基于SOAP协议的Web服务。以下是对这一主题的详细解释: 1. **Spring...

    spring+CXF实现WebService(http+https)

    CXF作为Web服务提供商,它支持SOAP和RESTful两种风格的服务,能够与Spring无缝对接。通过Spring的ApplicationContext配置,我们可以管理CXF服务的生命周期,实现服务的发布和消费。 2. **创建WebService**: 使用...

    Spring整合CXF demo

    **Spring整合CXF详解** Spring框架与Apache CXF的整合是企业级Java应用中常见的实践,主要用于构建基于SOAP和RESTful服务。这个"Spring整合CXF demo"项目提供了一个直观的例子,帮助开发者理解如何在Spring环境中...

Global site tag (gtag.js) - Google Analytics