Spring整合webservice服务

1.导入坐标,服务端(rs)

<!-- 使用CXF RS开发 -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>3.0.1</version>
        </dependency>

<!-- 在CXF扩展提供者,提供转换json接口  -->
        <dependency>
            <groupId>org.apache.cxf</groupId>                           <artifactId>cxf-rt-rs-extension-providers</artifactId>
            <version>3.0.1</version>
        </dependency>

        <!-- cxf 扩展提供者 转换json 默认需求一个工具包  -->
        <dependency>
            <groupId>org.codehaus.jettison</groupId>
            <artifactId>jettison</artifactId>
            <version>1.3.7</version>
        </dependency>

2.web.xml配置

<servlet>
        <servlet-name>CXFService</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>
    <servlet-mapping>
        <servlet-name>CXFService</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

3.接口的配置
3.1 path无参数

@POST
    @Path("/user")
    @Consumes({ "application/xml", "application/json" })
    public void saveUser(User user);

    @PUT
    @Path("/user")
    @Consumes({ "application/xml", "application/json" })
    public void updateUser(User user);

@GET
    @Path("/user")
    @Produces({ "application/xml", "application/json" })
    public List<User> findAllUsers();

3.2 path有参数(两种传参方法)

@POST
    @Path("/user/{id}")
    public void saveUser(@PathParam("id") String id);
调用服务方法:http://localhost:XXXX/项目名/webxml配置(service)/ApplicationContext文件中address的路径(Service1)/接口上的path路径/参数

    @PUT
    @Path("/user")
    public void saveUser(@QueryParam("id") String id);

@GET
    @Path("/user")
    @Produces({ "application/xml", "application/json" })
    public List<User> findAllUsers();

4.ApplicationContext.xml文件配置

<jaxrs:server id="abcCustomerService" address="/Service1"><!-- web.xml后配置的路径 -->
        <jaxrs:serviceBeans>
        <!-- webservice 接口方法实现类  -->
            <bean class="cn.itcast.bos.service.take_delivery.impl.PromotionServiceImpl"></bean>
        </jaxrs:serviceBeans>
        <jaxrs:inInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
        </jaxrs:inInterceptors>
        <jaxrs:outInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
        </jaxrs:outInterceptors>
    </jaxrs:server>     

5.接口上方法参数意义

@PathParam@QueryParam处理简单参数类型,如StringInteger8种原始类型+8种包装类型+String
@Consumes处理自定义对象类型,如UserCar

6.调用服务(导入坐标和调用格式)

    <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-rs-client</artifactId>
            <version>${cxf.version}</version>
        </dependency>

调用服务方法:
WebClient.create(http://localhost:XXXX/项目名/webxml配置(service)/ApplicationContext文件中address的路径(Service1)/接口上的path路径/参数
)
注意事项:
1.如果是要通过webservice服务传输的pojo类,需要加上注解
@XmlRootElement
2.如果自己封装的实体类里面有泛型,需要加上注解
@XmlSeeAlso({泛型的实现类字节码文件}) 

猜你喜欢

转载自blog.csdn.net/ip15988/article/details/82532874