gpt4 book ai didi

java - 在 Tomcat 中集成 Wink 和 Spring

转载 作者:行者123 更新时间:2023-11-28 22:30:41 26 4
gpt4 key购买 nike

我正在尝试访问应该部署在 tomcat 中的 Wink 资源。资源代码为

@Path("/lookup")
public class LookupResource {

private static final Logger logger = LoggerFactory.getLogger(LookupResource.class);

private MetaService metaService;

/**
*
*/
public LookupResource() {
logger.debug("CTOR +-");
}

/**
* @return the metaService
*/
public MetaService getMetaService() {
return metaService;
}

/**
* @param metaService the metaService to set
*/
public void setMetaService(MetaService metaService) {
logger.debug(String.format("Setting Meta Svc: %s ", metaService));
this.metaService = metaService;
}

@GET
@Path("/states")
@Produces("application/json")
public JSONObject getStates() {
final String METHOD = "getMessage";
JSONObject answer = new JSONObject();
try {
logger.debug(String.format("%s +", METHOD));
List<Lookup> states = getMetaService().findStates();
for (Lookup state : states) {
answer.put("Lookup", state);
}
} catch (JSONException e) {
logger.debug("Problem", e);
} finally {
logger.debug(String.format("%s -", METHOD));
}
return answer;

}
}

我在 web.xml 中添加了 Spring

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

在 my-webapp.xml spring 配置中我注册了资源

<bean id="lookupResource" class="com.codeheadllc.webapp.LookupResource" >
<property name="metaService" ref="metaService" />
</bean>

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

当我部署并启动 tomcat 时,我在记录器中看到我的 LookupResource bean 已加载并且它获得了对 metaService 的引用。但是,当我点击 http:///my-webapp/lookup/states 时,我没有访问 LookupResouce,而是收到了 404 消息。我确信这是一个愚蠢的疏忽,但我不明白我做错了什么。如果我将一个 servlet 添加到 RestServlet 的 web.xml 并添加一个映射,比如 rest/*,那么 RestServlet 将创建一个新的 LookupResource 实例(没有 spring IOC)并尝试执行该方法。

任何帮助将不胜感激

最佳答案

If I add a servlet to the web.xml for RestServlet and add a mapping, say rest/*, then the RestServlet will create a new instance of LookupResource (without spring IOC) and attempt to execute the method.

嘿!您仍然需要将 servlet 添加到 web.xml 中!

Spring 集成不会取代 RestServlet。它只允许将资源定义为 Spring bean。

关于java - 在 Tomcat 中集成 Wink 和 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com