[英]How to get Jetty in Karaf to serve static content from file system?
我需要從Karaf中的捆綁包外部提供靜態內容。 由於它已經內置了Pax Web和Jetty,所以我認為這不是問題,但到目前為止沒有成功:(
我安裝了jetty
, http
, http-whiteboard
和war
功能。 按照http://team.ops4j.org/wiki/display/paxweb/Advanced+Jetty+Configuration ,我已將其添加到etc/jetty.xml
:
<Get name="handler">
<Call name="addHandler">
<Arg>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Set name="contextPath">/app</Set>
<Set name="resourceBase">/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.poim.resources-rodniki/
</Set>
<Call name="addServlet">
<Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
</Arg>
</Call>
</Get>
完整的文件是:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//
DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Set connectors -->
<!-- =========================================================== -->
<!-- One of each type! -->
<!-- =========================================================== -->
<!-- Use this connector for many frequently idle connections and for threadless
continuations. -->
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host">
<Property name="jetty.host" default="0.0.0.0" />
</Set>
<Set name="port">
<Property name="jetty.port" default="8282" />
</Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<!-- =========================================================== -->
<!-- Configure Authentication Realms -->
<!-- Realms may be configured for the entire server here, or -->
<!-- they can be configured for a specific web app in a context -->
<!-- configuration (see $(jetty.home)/contexts/test.xml for an -->
<!-- example). -->
<!-- =========================================================== -->
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
<Set name="name">karaf</Set>
<Set name="loginModuleName">karaf</Set>
<Set name="roleClassNames">
<Array type="java.lang.String">
<Item>org.apache.karaf.jaas.modules.RolePrincipal</Item>
</Array>
</Set>
</New>
</Arg>
</Call>
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
<Set name="name">default</Set>
<Set name="loginModuleName">karaf</Set>
<Set name="roleClassNames">
<Array type="java.lang.String">
<Item>org.apache.karaf.jaas.modules.RolePrincipal</Item>
</Array>
</Set>
</New>
</Arg>
</Call>
<Get name="handler">
<Call name="addHandler">
<Arg>
<New class="org.eclipse.jetty.servlet.ServletContextHandler">
<Set name="contextPath">/app</Set>
<Set name="resourceBase">/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.poim.resources-rodniki
</Set>
<Call name="addServlet">
<Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
</Arg>
</Call>
</Get>
</Configure>
並使用以下內容創建了文件org.ops4j.pax.web.cfg
:
org.ops4j.pax.web.config.file=/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.karaf.launcher/etc/jetty.xml
在日志中,我看到了
2012-06-02 12:03:52,800 | INFO | g.ops4j.pax.web) | Server | - - | jetty-7.5.4.v20111024
2012-06-02 12:03:52,848 | INFO | g.ops4j.pax.web) | ContextHandler | - - | started o.e.j.s.ServletContextHandler{/app,file:/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.poim.resources-rodniki/}
2012-06-02 12:03:52,907 | INFO | g.ops4j.pax.web) | AbstractConnector | - - | Started SelectChannelConnector@0.0.0.0:8282 STARTING
2012-06-02 12:03:52,914 | INFO | g.ops4j.pax.web) | JettyServerImpl | 124 - org.ops4j.pax.web.pax-web-jetty - 1.0.9 | Pax Web available at [0.0.0.0]:[8080]
2012-06-02 12:03:52,927 | INFO | g.ops4j.pax.web) | AbstractConnector | - - | Started NIOSocketConnectorWrapper@0.0.0.0:8080 STARTING
但是文件不可見。 例如,我有一個文件/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.poim.resources-rodniki/.style
,但是轉到http://192.168.1.9:8080/app/.style
或http://192.168.1.9:8282/app/.style
給出404錯誤。
也許有點晚,但是..
對我來說,做同樣的事情很好,例如,我從http://team.ops4j.org/wiki/display/paxweb/Advanced+Jetty+Configuration復制了代碼片段,並更改了兩條路徑。 我重新啟動karaf,並且文件已送達。
您是否以有權訪問/ home / aromanov的用戶身份運行karaf?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.