2010-12-06 3 views
11

다른 포트에서 실행되는 tomcat에 mutiple java 웹 응용 프로그램을 배포하는 방법은 무엇입니까? - 다른 웹 응용 프로그램이 다른 포트에서 실행되도록 설정하는 방법 -이 작업을 수행하려면 무엇을해야합니까?다른 포트에서 실행되는 tomcat에 다중 웹 응용 프로그램을 배포하는 방법은 무엇입니까?

+0

다른 포트가 필요한 이유는 무엇입니까? – JoseK

+0

http://stackoverflow.com/questions/8823290/how-to-run-different-apps-on-single-tomcat-instance-behind-different-ports – sab

답변

4

여러 개의 톰캣을 설치하는 것이 좋습니다. 더 쉬울 것입니다.

server.xml에 여러 개 등록한 다음 컨텍스트를 필터링 할 수는 있지만 지루하고 잘못된 것 같습니다.

+2

하나의 Tomcat 서버에서만 수행하는 방법을 알고 싶습니다. .. 나는 여러 명을 원하지 않는다. – LetsSyncUp

+3

여러 서버를 보유하는 대신 그 옵션을 선택하는 이유는 무엇입니까? – Bozho

6

server.xml 파일 (tomcat_home/conf)에 다른 서비스를 설정해야합니다. 당신이 당신의 서버 파일을 변경 havent 한 경우에, 당신은 이미 이름이 디바이스 1로 카탈리나에서 변경된 것을

<Service name="Dev2"> 
    <Connector port="8090" maxHttpHeaderSize="8192" 
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
       enableLookups="false" redirectPort="8443" acceptCount="100" 
       connectionTimeout="20000" disableUploadTimeout="true" /> 
    <Connector port="8092" 
       enableLookups="false" redirectPort="9443" protocol="AJP/1.3" /> 

    <Engine name="Dev2" defaultHost="MyDev"> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 
     <Host name="MyDev" appBase="webapps" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
     </Host> 
    </Engine> 
</Service> 

고지 (당신은 버전에 따라 약간 다른 뭔가가있을 수 있습니다, 톰캣 5.5을 사용하고 있습니다) 카탈을 하나 선정해야 MyDev에 로컬 호스트. 응용 프로그램에 맞는 것으로 변경하십시오. 포트 및 커넥터도 변경되었습니다. 새 서비스가 설정되면 적절한 서비스/포트에 응용 프로그램을 배포해야합니다. 당신은 당신이해야 할 추가 당신이이 시점에서

을 설정하는

Tomcat_Home/conf/Catalina/localhost/ 

및 각 포트에 대한

Tomcat_Home/conf/Dev2/MyDev/ 

을 (Virtual Hosting 참조)에서 XML 파일을 사용하여이 작업을 수행 애플리케이션에 대한 서비스를 가리키는 파일이 몇 개 더 있습니다. 나는이 파일에 포함 된 Another.xml라는 파일이 Tomcat_Home/conf/Dev2/MyDev/에서 예를 들어 의

<Context path="/" docBase="C:/to_delete" debug="10" crossContext="false"> 
</Context> 

지금 내가하려고하면 웹 주소 http://127.0.0.1:8090/Another 를 사용하여 새 응용 프로그램에 액세스하고 내 기본 포트를 사용하여이 액세스 할 수 있습니다 다음 8080의 응용 프로그램이 해당 포트에 배포되지 않았기 때문에 오류가 발생합니다.

이 설정에 대해주의해야 할 몇 가지 사항. VirtualVM을 사용하여 응용 프로그램을 살펴 본다면 동일한 프로세스 ID를 공유한다는 것을 알 수 있습니다. 그러므로 당신은 당신의 자원을 더욱 조심해야합니다. 그들은 동일한 힙 공간을 사용하게되며 모든 스레드가 같은 목록에 표시됩니다. 응용 프로그램 (예 : Log4j)에 로그인 한 경우 작업을 수행하고있는 스레드를 표시 할 수있는 옵션이 있는지 확인하십시오. 그렇지 않으면 어떤 포트/응용 프로그램에서 발생하는지 알 수 없을 수도 있습니다.

Bozho는 이미 지적했듯이, 하나의 서버가 여러 포트에서 수신 대기하는 대신 Tomcat의 두 인스턴스가 단순히 실행되는 것이 더 쉽습니다.

4

죄송합니다. 나는이 질문에 대해 나에게 어떠한 해설 능력도 보이지 않는다. Mabye 질문이 너무 오래되었거나 나의 명성이 충분히 높지 않습니다.

그러나 나는 같은 질문을 스스로 연구하고있다. Tomcat, http 서버 및 Java 시스템 환경이 동일한 인스턴스를 사용하는 방법에 대해 더 많이 알아야 할 것입니다. 나는 또한 매우 느린 곳을 읽었다.

최상의 선택은 별도의 인스턴스입니다.사용자 인스턴스마다 자신 만 http://ubuntuforums.org/showthread.php?t=1211517 http://code.google.com/p/tomcat-linux/

B/: A는/우분투를 들어,이 스크립트를 얻을 수 SVN을 사용할 수 있습니다 그렇게 두 매우 쉬운 방법이 있습니다. http://brian.pontarelli.com/2007/09/17/multiple-tomcat-instances-on-ubuntu/

마지막 하나는 바람둥이 5.5 용으로 작성하지만, 아마도 톰캣 6 그러나

에 적응할 수 있었다, 톰캣 리눅스에 대한 최신 여러 JVM 인스턴스에 대한 최선의 방향은 여기에 있습니다 : http://www.puschitz.com/InstallingTomcat.html

+0

Welllll, 'su'환경에서 'source'명령이 우분투에서 작동하지 않습니다. 또한 위의 "puschitz.com"링크는 server.xml 파일에 'Context'요소를 넣으라고 요구합니다. Tomcat6 서버가 작동 중이며 내 컴퓨터에 해당 요소가있는 server.xml 파일이 없습니다. 그런 이유로 puschitz.com 접근 방식을 사용할 수 없습니다. 그래서 나는 그 링크에서 물러납니다. 나는 아직도 자신을보고있다. – Dennis

2

Apache에서 mod-proxy를 사용하여 맞춤 포트를 표준 포트로 리디렉션 할 수 있습니다.

mod proxy

관련 문제