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中将上述文件配置到restfulservlet的初始化参数中。如下

<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配置项,这样也能方便保证资源的单例。

相关推荐