Wie aktivieren Sie die Ablaufverfolgung in Jersey WS fordert, dass bei der Verwendung von Guice servlet eine Konfiguration
Ich versuche, aktivieren Sie die Ablaufverfolgung, um debug-Jersey-WS-Aufruf. Ich habe versucht, das hinzufügen des init-param beschrieben hier, sowohl in meiner Guice servlet-config und in der web.xml, aber kann nicht scheinen, um es zu arbeiten.
Hier ist, was die Guice-servlet-config sieht wie folgt aus:
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);
}
}
und ich habe auch versucht, nur indem Sie in die web.xml aber ich nehme an, dass dies ignoriert wird, da bin ich konfiguriert Jersey via Guice.
<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>
- Dein Erster Ansatz der richtige ist (das zweite wird nicht funktionieren, wie Sie bereits erwähnt). Sehen Sie nicht
X-Jersey-Trace-*
HTTP-Header in Ihre Antworten? - Danke für die Antwort. Nein, ich sehe einige log-Meldungen, die ich Hinzugefügt, um meine Methode, die aufgerufen wird, aber nichts von Jersey. Ich werde versuchen zu tun, ein Beispiel ohne Guice in der Art und Weise, und sehen, ob das vielleicht etwas damit zu tun.
- Ich verfolgte ihn durch den debugger, und ich sehe in WebApplicationImpl, es ist die Einstellung isTraceEnabled, um wahr zu
this.isTraceEnabled = resourceConfig.getFeature(ResourceConfig.FEATURE_TRACE) | resourceConfig.getFeature(ResourceConfig.FEATURE_TRACE_PER_REQUEST);
ich bin mit jersey-bundle 1.14. - Ich glaube, ich fand heraus, was falsch ist, diese Spuren gehen zurück an den client aufrufen kann, und ich bin auf der Suche nach Ihnen in eine server-side-log-Datei!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um zu sehen, log-Meldung in Ihren server-log - (die erste Konfiguration der Ablaufverfolgung ist die richtige), müssen Sie ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS und/oder ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS Eigenschaften, die auf Ihre Konfiguration, wie:
Siehe JavaDoc von container LoggingFilter.
Den code wie gepostet funktioniert. Ich war auf der Suche nach trace-Meldungen in den logs. Ich wusste nicht, dass die trace-Meldungen werden gesendet, zurück in den response-header wie beschrieben hier.
Gleiche Sache, aber mit einem ResourceConfig-Datei.
In der
web.xml
:Und in den code :
Und nur die Eigenschaften hinzufügen, wie bereits von Michal Gajdos oben, wenn Sie wollen-server Seite Ablaufverfolgung.