0

如何将 Spring bean 注入 Apache Wink?

我现在正在使用 wink-spring-support 并且我认为我的设置正确。

web.xml 包括:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:META-INF/wink/wink-core-context.xml
        classpath:applicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>restServlet</servlet-name>
    <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>restServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

META-INF/wink/wink-core-context.xml 包含:

<bean class="org.apache.wink.spring.Registrar">
    <property name="instances">
        <set>
            <ref bean="myservice" />
        </set>
    </property>
</bean>

<bean id="myservice" class="mystuff.ServiceImpl"/>

有一个@Autowired注解mystuff.ServiceImpl注入了其他 Spring 东西,并mystuff.ServiceImpl实现了一个 JAX-RS 注解接口,并且它本身包含一个 JAX-RS@Path("/services")注解。

我可以看到 Spring 很好地加载了这些东西,包括myservicebean。但是,当我请求我的资源时,我得到一个 404 未找到。当 Wink 启动时,我可以看到一些可能表明问题的日志条目:

applicationConfigLocation property was not defined

Using application classes null named in init-param applicationConfigLocation

我在某个地方错过了什么吗?有什么建议吗?

4

1 回答 1

0

问题是我对文档的误解。

META-INF/server/wink-core-context.xml提供了一个 Spring 配置wink-spring-support。这会注册实际执行设置的 BeanPostProcessor,并且必须从contextConfigLocation.

我以为我把我的配置放在那里了,这就解释了为什么应用程序在启动时没有在 Wink 中注册。

于 2012-02-08T12:03:16.880 回答