Wink与Spring集成的配置

1. 引言

Apache Wink 是一个 Restful 开发 JAXB-RS 规范的实现框架,和以前用过的 CXF 比较多, restful 还是比较小巧的(小巧也是应该,毕竟 wink 只是 restful 的框架,并不支持 SOAP )。 Wink 的部署也很简单,大概有三种方式吧。

第一种是通过注册 wink 提供的 SimpleWinkApplication 来注册 restful 的资源,资源直接在配置文件中声明。配置文件内容举例:

文件: rest-resources.properties

# Resources
com.example.FooResource
com.example.BarResource

         在系统的 web.xml 中将上述文件配置到 restful servlet 的初始化参数中。如下

<servlet>
<servlet-name>restSdkService</servlet-name>
<servlet-class>
org.apache.wink.server.internal.servlet.RestServlet
</servlet-class>
<init-param>
<param-name>applicationConfigLocation</param-name>
<param-value>/WEB-INF/rest-resources.properties </param-value>
</init-param>
</servlet>

 

         第二种是通过 Application 注册资源,通过实现 javax.ws.rs.core.Application 接口来配置和注册资源。

    以上两种我们只是简单介绍,配置均比较直观,参考 wink 的官方文档均能比较容易配置实现。本文主要介绍下第三种方式——与 spring 集成。关于与 spring 集成,官方文档也有介绍,但是在具体某些地方说的不够到位,对于刚接触 wink 的使用者在实施过程中可能就会遇到那些不是问题的问题。下面就详细介绍下集成的配置过程。而对于 restful 资源的开发不在本文介绍之内。

2. Web.xml 的配置

首先在系统的 web.xml 配置文件中我们需要加入 wink servlet 配置,这也是 wink 实现 restful 服务的入口, Wink 通过该 RestServlet 处理接收到的 HTTP 请求。

配置如下:

<servlet>
         <servlet-name>restService</servlet-name>
         <servlet-class>
         org.apache.wink.server.internal.servlet.RestServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
            <servlet-name>restService</servlet-name>
            <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

 

因为我们是要和 spring 集成的,因为在 web.xml 中还要加入 spring 的支持。配置如下:

<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:META-INF/server/wink-core-context.xml
           classpath:applicationContext-*.xml
       </param-value>
    </context-param>
    <listener>
       <listener-class>
           org.springframework.web.context.ContextLoaderListener
       </listener-class>
</listener>

 

这里有一点是需要注意的,就是参数值 classpath:META-INF/server/wink-core-context.xml ,这个文件是存在 wink wink-spring-support-1.2.0-incubating.jar 中的,这个 jar 可以在下载的 apache-wink-1.2.0-incubating.zip ext 目录中找到。如果要修改其中的默认配置,可以将该文件拷出来另存到其他目录并进行修改,当然这样的话此处的配置也需要重新指定到新路径。 classpath:applicationContext-*.xml 这个配置项是指的 spring 的配置文件。

至此, web.xml 文件的配置工作就完成了。

3. Spring 的配置

<bean id="fooResource" class="com.harvey.stuido.ws.rest.resources.FooResource"/>
<bean class="org.apache.wink.spring.Registrar">
    <property name="classes">
        <set value-type="java.lang.Class">
        </set>
    </property>
    <property name="instances">
        <set>
           <ref bean="fooResource" />
        </set>
    </property>
</bean>    
 

其中的 fooResource 是我们要发布的 restful 的资源(关于 restful 资源的开发略)。其中的 classes 配置项中的 class 集合我们留空,这个配置与前面提到的第二种方式的 Application getClasses 功能类似,因为我们是要想利用 spring 来管理各个 resource ,所以我们只配置 instances 配置项,这样也能方便保证资源的单例。

你可能感兴趣的:(spring,Restful,web Service,apache wink)