2010-03-08 8 views
2

을 web.xml에 파일을지도?(등, jetty.xml의)은 web.xml이나 다른 배치 기술자의 디렉토리를 매핑 할 수있는 간단한 방법이 있을까요 외부 디렉토리

예를 들어,/opt/files/디렉토리가있는 경우 http://localhost/some-mapping/을 방문하여 파일 및 하위 디렉토리에 액세스 할 수있는 방법이 있습니까? 이 일을하는 간단한 방법이 있어야한다는 인상을 주지만, Google, stackoverflow 등을 통해 방법을 찾아 내지 못했습니다. 내가 찾은 것은 파일 서버를 모방 한 서블릿뿐입니다. 참고로

가 나는 AIX 상자에 부두를 사용하고 있습니다.

난 당신이 URL 매핑, 당신의 web.xml 파일은 당신이 설명하는 방식으로 액세스 할 수있는 같은 디렉토리에 있지만 파일 및 폴더, 당신이 통제 할 수 있지만, 그렇게 할 수 있다는 것을 알고하지 않습니다

답변

5

부두와 그것을 할 수 있지만, 톰캣에서 방금 새로운 <Context>server.xml에 추가 할 수있는 방법을 모르고 : 그것은 http://example.com/files/... 액세스의

<Context docBase="/opt/files" path="/files" /> 

이 방법을. 부두에 비슷한 것이 있는지보십시오.

업데이트 : 지금 아직 jetty.xml 맛에 그 번역

WebAppContext files = new WebAppContext("/opt/files", "/files"); 
Server server = new Server(8080); 
server.setHandler(files); 
server.start(); 

: 인터넷 검색을 한 후, "정상적인 자바 코드"상응하는 뭔가처럼 될 것입니다. 나는 비트가 웹에있는 문서와 예제를 기반으로 추측 오전, 그래서 나를 핀하지 않습니다

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="webApp">/opt/files</Set> 
    <Set name="contextPath">/files</Set> 
</Configure> 

또 다른 가능성이있을 수 있습니다 :

<Configure class="org.mortbay.jetty.Server"> 
    <Call name="addHandler"> 
     <Arg> 
      <New class="org.mortbay.jetty.webapp.WebAppContext"> 
       <Arg name="webApp">/opt/files</Arg> 
       <Arg name="contextPath">/files</Arg> 
      </New> 
     </Arg> 
    </Call> 
</Configure> 
+0

감사합니다. Tomcat에서이 작업을 수행하는 것이 분명합니다 (더 익숙합니다). 해당 부두 파일은 jetty.xml이라고 생각합니다. jetty에 디렉토리를 매핑하기위한 xml 언어는 tomcat과 상당히 다른 것처럼 보입니다. –

+0

업데이트 해 주셔서 감사합니다. 불행히도, 나는 조금 다른, 일식 부두 api를 사용하고 있습니다. 첫 번째 제안은 전혀 작동하지 않으며, eclipse jetty http://download.eclipse.org/jetty/stable-7/apidocs/에 "addHandler"메소드가 없기 때문에 두 번째 메소드가 작동하지 않습니다. –

+1

나는 본다. 이 FileServer 예제가 도움이됩니까? 당신이 부두의 사본을 다운로드하는 경우 http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#File_Server – BalusC

0

귀하의 webapp에서 매핑.

귀하의 요구 사항에 맞습니까?

+0

감사합니다,하지만 난이 알고 . 웹 컨테이너 외부에있는 디렉토리를 매핑하는 방법을 찾고 있습니다. 나는 이것이 아마도 모범 사례는 아니지만 이것은 인터넷에서 고립되어 남아 있으며 인트라넷에서만 접근 할 수있는 서버를위한 것임을 알고 있습니다. –

+1

해당 루트 디렉토리의 바로 가기 (UNIX 소프트 링크 또는 Windows 바로 가기)? – Brabster

+0

UNIX 소프트 링크가 작동 할 수도 있지만 Windows 바로 가기는 테스트하지 않았습니다. 나는 내 자신의 질문에 대한 답변을 찾은 것으로 생각한다. (무거운 google-fooing 이후). 아래 내 대답을 참조하십시오. –

1

좀 더 주위를 손보는 후, 가장 좋은 방법은 내가이 사람을 도움이되기를 바랍니다 ... (부두에 대한)이 다음과 같은 상황에 맞는 디렉토리에 기술자를 배치하는 것입니다

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<!-- Configuration of a custom context. --> 
<Configure class="org.eclipse.jetty.server.handler.ContextHandler"> 
    <Call class="org.eclipse.jetty.util.log.Log" name="debug"> 
     <!-- The default message to show if our context breaks. --> 
     <Arg>Configure context.xml</Arg> 
    </Call> 
    <!-- 
     The context path is the web location of the context in relation to the 
     server address. 
    --> 
    <Set name="contextPath">/context</Set> 
    <!-- 
     The resource base is the server directory to use for fetching files. 
    --> 
    <Set name="resourceBase">/path/to/files/on/server</Set> 
    <Set name="handler"> 
     <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
      <Set name="directoriesListed">true</Set> 
      <!-- For now we don't need any welcome files --> 
      <!-- 
       <Set name="welcomeFiles"> <Array type="String"> 
       <Item>index.html</Item> </Array> </Set> 
      --> 
      <!-- 
       The cache time limit in seconds (ie max-age=3600 means that if the 
       document is older than 1 hour a fresh copy will be fetched). 
      --> 
      <Set name="cacheControl">max-age=3600,public</Set> 
     </New> 
    </Set> 
</Configure> 

을 할 수 그밖에!