我嘗試實現自定義PushStrategy,這是一個與Jetty中的SPDY協議的服務器推送支持相關的API。從PushStrategy訪問ServletContext
我實現以下方法:
public Set<String> apply(Stream stream, Fields requestHeaders, Fields responseHeaders);
但是我需要訪問方法調用內部ServletContext的,但我不知道我怎樣才能訪問它。
我調查的方式中的jetty.xml注入WebAppContext:
<New id="pushStrategy" class="spdy.MyPushStrategy">
<Set name="webAppContext">
<Ref id="..." />
</Set>
</New>
的問題是,這個配置步驟是在聲明的jetty.xml服務器塊:
<Configure id="Server" class="org.eclipse.jetty.server.Server">....</Configure>
而jetty-web.xml中配置了WebAppContext
<Configure id="WebAppContext" class="org.eclipse.jetty.webapp.WebAppContext">
我不知道如何引用y此文件中的現有WebAppContext ID。
這裏是我的Maven插件配置:
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-version}</version>
<configuration>
<stopPort>8888</stopPort>
<stopKey>quit</stopKey>
<jvmArgs>
-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/npn/npn-boot/${npn-version}/npn-boot-${npn-version}.jar
</jvmArgs>
<webAppConfig>
<jettyEnvXml>${basedir}/src/main/config/jetty-web.xml</jettyEnvXml>
</webAppConfig>
<jettyXml>${basedir}/src/main/config/jetty.xml</jettyXml>
<contextPath>/</contextPath>
</configuration>
這不起作用。我的對象是在jetty.xml中創建的,它引用了一個在jetty-web.xml中配置的webapp!請參閱更新的主題 –
spdy.MyPushStrategy實例調用setter,但將空值指定爲參數。 –
最後使用添加所需標題的過濾器。 –