gpt4 book ai didi

java - 使用 Guice servlet 配置时如何在 Jersey WS 调用中打开跟踪

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:07 25 4
gpt4 key购买 nike

我正在尝试打开跟踪以调试 Jersey WS 调用。我尝试添加描述的 init-param here ,在我的 Guice servlet 配置和 web.xml 中,但似乎无法让它工作。

这是 Guice servlet 配置的样子:

public class GuiceServletConfig extends GuiceServletContextListener
{
private static final Logger log = LoggerFactory.getLogger(GuiceServletConfig.class);

public GuiceServletConfig()
{
super();
log.debug("creating GuiceServletConfig");
}



private static class ServletModule extends JerseyServletModule {
private InputStream getInputStream() throws FileNotFoundException {
File file = new File("tmp");
String pathToTempFile = file.getAbsolutePath();
log.debug("path to config: {}", pathToTempFile);
String pathWithoutTmp = pathToTempFile.substring(0,
pathToTempFile.indexOf(File.separator + "tmp"));
StringBuilder stringBldr = new StringBuilder(pathWithoutTmp)
.append(File.separator).append("extensions")
.append(File.separator).append("__lib__")
.append(File.separator).append("gelato.config.properties");
log.debug("loading guice properties from: {}", stringBldr.toString());
return new FileInputStream(new File(stringBldr.toString()));
}

@Override
protected void configureServlets() {
Properties properties = new Properties();
try {
InputStream is = getInputStream();
properties.load(is);
Names.bindProperties(binder(), properties);
} catch (Exception ex) {
log.error("Error binding properties: {}", ex.toString());
}
// Must configure at least one JAX-RS resource or the
// server will fail to start.
// Must configure at least one JAX-RS resource or the
// server will fail to start.
bind(UserResource.class);
bind(PlayersManager.class).to(GelatoPlayersManager.class);
bind(MessageHandler.class).to(SFSMessageHandler.class);
Map<String, String> params = new HashMap<String, String>();
params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "org.buffalo.gelato.resources");
// Route all requests through GuiceContainer
params.put("com.sun.jersey.config.feature.Trace", "true");
serve("/rest/*").with(GuiceContainer.class, params);
}
}

我也试过将它放在 web.xml 中,但我想这会被忽略,因为我是通过 Guice 配置 Jersey。

<servlet>
<servlet-name>Jersey REST Service for value codes</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.feature.Trace</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

最佳答案

如果你想在你的服务器日志中看到日志消息(你的第一个跟踪配置是正确的),你需要添加 ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS和/或 ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS配置的属性,例如:

params.put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, com.sun.jersey.api.container.filter.LoggingFilter.class);
params.put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, com.sun.jersey.api.container.filter.LoggingFilter.class);

参见容器的 JavaDoc LoggingFilter .

关于java - 使用 Guice servlet 配置时如何在 Jersey WS 调用中打开跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260237/

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