2013-03-29 54 views
3

我是新來的Java和Jetty,但有一個問題,我想解決。是否可以在webdefault.xml中的8888中運行主Servlet和ProxyServlet?

這是我知道怎麼解釋我試着用我這麼裸露的唯一途徑...

我現在有一個碼頭servlet中運行的web應用程序? (我猜是你怎麼說)

當它啓動時,它運行在localhost:8888/

我使用一個單獨的Ruby/Sinatra的過程來管理我的資產(JS,CSS,圖像)。 這將運行在localhost:3000/

理想情況下,我想一個碼頭ProxyServlet的發送從本地主機的任何請求:8888 /資產/ *爲localhost:3000 /資產/ *爲避免交叉域錯誤。

這只是在開發中,我的生產資產將在其他地方供應,因此不會在可擴展性或其他問題的情況下回答。

此外,我需要這兩個「Servlets」在相同的PORT 8888內運行sidebyside?

所以再來一次... 所有到localhost的請求:8888/*(除/ assets/)都會路由到主webapp servlet。 所有請求爲localhost:8888 /資產/將路線紅寶石/西納特拉服務器localhost:3000 /資產/ *

我目前webdefault.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    metadata-complete="true" 
    version="2.5" 
> 

    <description> 
    Default web.xml file. 
    This file is applied to a Web application before it's own WEB_INF/web.xml file 
    </description> 
<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 

    <init-param> 
     <param-name>confPath</param-name> 
     <param-value>/urlrewrite.xml</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

    <listener> 
    <listener-class>org.eclipse.jetty.servlet.listener.ELContextCleaner</listener-class> 
    </listener> 

    <listener> 
    <listener-class>org.eclipse.jetty.servlet.listener.IntrospectorCleaner</listener-class> 
    </listener> 

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
    <init-param> 
     <param-name>aliases</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>acceptRanges</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>dirAllowed</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>welcomeServlets</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>redirectWelcome</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>maxCacheSize</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>maxCachedFileSize</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>maxCachedFiles</param-name> 
     <param-value>2048</param-value> 
    </init-param> 
    <init-param> 
     <param-name>gzip</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>useFileMappedBuffer</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <!-- 
    <init-param> 
     <param-name>resourceCache</param-name> 
     <param-value>resourceCache</param-value> 
    </init-param> 
    --> 
    <!-- 
    <init-param> 
     <param-name>cacheControl</param-name> 
     <param-value>max-age=3600,public</param-value> 
    </init-param> 
    --> 
    <load-on-startup>0</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <!-- ********************************************************************* --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!-- Railo --> 

    <servlet id="Railo"> 
    <description>Railo CFML Engine</description> 
    <servlet-name>CFMLServlet</servlet-name>  
    <servlet-class>railo.loader.servlet.CFMLServlet</servlet-class> 
    <!-- 
    <init-param> 
     <param-name>railo-server-root</param-name> 
     <param-value>/var/Railo/config/server/</param-value> 
     <description>Railo Server configuration directory (for Server-wide configurations, settings, and libraries)</description> 
    </init-param> 
    !--> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!-- 
    <init-param> 
     <param-name>railo-web-directory</param-name> 
     <param-value>/var/Railo/config/web/{web-context-label}/</param-value> 
     <description>Railo Web Directory (for Website-specific configurations, settings, and libraries)</description> 
    </init-param> 
    !--> 
    <load-on-startup>2</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>CFMLServlet</servlet-name> 
    <url-pattern>*.cfc</url-pattern> 
    <url-pattern>*.cfm</url-pattern> 
    <url-pattern>*.cfml</url-pattern> 
    <url-pattern>/index.cfc/*</url-pattern> 
    <url-pattern>/index.cfm/*</url-pattern> 
    <url-pattern>/admin/index.cfm/*</url-pattern> 
    <url-pattern>/lms/index.cfm/*</url-pattern> 
    <url-pattern>/index.cfml/*</url-pattern> 
    </servlet-mapping> 


    <!-- ===================================================================== --> 
    <!-- Railo REST Servlet - handles Railo's RESTful web services    --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <servlet id="RESTServlet"> 
    <description>Railo Servlet for RESTful services</description> 
    <servlet-name>RESTServlet</servlet-name>  
    <servlet-class>railo.loader.servlet.RestServlet</servlet-class> 
    <load-on-startup>3</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>RESTServlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 


    <!-- ===================================================================== --> 
    <!-- Railo MessageBroker Servlet - Flex Gateway       --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <servlet id="MessageBrokerServlet"> 
    <description>Railo Servlet for Flex Gateway</description> 
    <servlet-name>MessageBrokerServlet</servlet-name> 
    <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> 
    <!-- init-param> 
     <param-name>services.configuration.file</param-name> 
     <param-value>/WEB-INF/flex/services-config.xml</param-value> 
    </init-param !--> 
    <!-- init-param> 
     <param-name>messageBrokerId</param-name> 
     <param-value>_default_</param-value> 
    </init-param !--> 
    <!-- load-on-startup>2</load-on-startup !--> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>MessageBrokerServlet</servlet-name> 
    <url-pattern>/flex2gateway/*</url-pattern> 
    <url-pattern>/flashservices/gateway/*</url-pattern> 
    <url-pattern>/messagebroker/*</url-pattern> 
    </servlet-mapping> 


    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
    <!--             Railo Definitions End --> 
    <!-- ===================================================================== --> 
    <!-- _____________________________________________________________________ --> 


    <!-- ==================================================================== --> 
    <session-config> 
    <session-timeout>30</session-timeout> 
    </session-config> 

    <!-- ==================================================================== --> 
    <welcome-file-list> 
    <welcome-file>index.cfm</welcome-file> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <!-- welcome-file>index.jsp</welcome-file !--> 
    </welcome-file-list> 

    <!-- ==================================================================== --> 
    <locale-encoding-mapping-list> 
    <locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping> 
    <locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping> 
    </locale-encoding-mapping-list> 

    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Disable TRACE</web-resource-name> 
     <url-pattern>/</url-pattern> 
     <http-method>TRACE</http-method> 
    </web-resource-collection> 
    <auth-constraint/> 
    </security-constraint> 

</web-app> 

我想是這樣這個? 但它只是導致503 Service Unavailable

<servlet> 
    <servlet-name>JettyProxy</servlet-name> 
    <servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class> 
    <init-param> 
    <!-- This points to the actual server where requests are proxied to --> 
    <param-name>ProxyTo</param-name> 
    <param-value>http://localhost:3000/</param-value> 
    </init-param> 
    <init-param> 
    <!-- This will be stripped off the client request URL --> 
    <param-name>Prefix</param-name> 
    <param-value>/</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

<servlet-mapping> 
    <servlet-name>JettyProxy</servlet-name> 
    <url-pattern>/assets/*</url-pattern> 
</servlet-mapping> 

這可能嗎?如果是這樣,它將如何實施?

回答

3

你的標籤說,你正在使用碼頭 - 8但代理servlet類表示碼頭 - 6(該org.mortbay.servlet.ProxyServlet)。在jetty-8上,你應該使用的ProxyServlet是org.eclipse.jetty.servlets.ProxyServlet,是的,這聽起來像是一個非常正常的用例。

+0

我最終用Jetty Rewrite ProxyRule解決了這個問題,但現在我明白了start.ini和更多東西,我想我也可以使用ProxyServlet完成此操作。 謝謝! –

相關問題