Справка по настройке Tomcat: несколько портов не отвечают - PullRequest
5 голосов
/ 18 января 2011

Моя цель состоит в том, чтобы порты 80 и 81 прослушивали и обслуживали контент по двум разным путям. Я смотрю на репликацию того, что я делал с IIS и создание веб-сайтов на определенных портах.

Я взял файл базовой конфигурации и добавил следующие строки в тег Server (server.xml):

<Service name="stable">
    <Connector port="80" protocol="HTTP/1.1" />
    <Context docBase="C:\websites\test\stable\" />
  </Service>
  <Service name="release">
    <Connector port="81" protocol="HTTP/1.1" />
    <Context docBase="C:\websites\test\release\" />
  </Service>

Я собирался дать совет, где мне нужно было установить тег Service с тегом Connector и Context для каждого порта, который я хотел запустить (внутри основного тега Server).

Я посмотрел свой журнал и нашел следующее:

16-Jan-2011 8:54:44 AM org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.NullPointerException
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
    at java.lang.Thread.run(Thread.java:619)

Мне известно о том, что Context работает лучше в более локализованном файле context.xml, но я не возражаю против перезапуска, пока это не заработает. Или, может быть, он должен быть там (не для APress Pro Apache TomCat6).

На данный момент переход на IP: 80 не вызывает ничего, ни файла, ни ошибки, просто пустую страницу. Даже когда я пытаюсь получить доступ к index.html (который был скопирован в надлежащую docBase), я получаю пустой экран без каких-либо ошибок.

Редактировать # 2

Я решил опубликовать свои файлы на тот случай, если у кого-то будет больше времени и он захочет их просмотреть.

Вот мой файл server.xml: http://pastebin.com/DAunTPTg

Вот ошибка, которую я получаю в данный момент: http://pastebin.com/mrrd0116

Редактировать # 3

Чтобы упростить ситуацию, я попытался заставить порт 80 нормально реагировать.

Согласно моей книге:

Имя этого виртуального хоста, как настроен с DNS. Один из хосты, вложенные в движок, должны иметь имя, которое соответствует атрибут defaultHost этого движка.

Зачем мне указывать что-либо, кроме localhost (localhost1 не сработает, не так ли?)

Это то, где я сейчас нахожусь, все еще не работает:

<Service name="Stable">
        <Connector 
            port="80" 
            protocol="HTTP/1.1"                
            connectionTimeout="20000" />

        <Engine name="Stable" defaultHost="localhost">
            <Host 
                name="localhost"  
                appBase="webapps">

                <Context docBase="C:\websites\test\stable" />               
            </Host>
        </Engine>
  </Service>

Я также получаю новые ошибки:

18 января 2011 20:37:12 org.apache.catalina.startup.Catalina НАЧАЛО СЕВЕР: Каталина.старт: LifecycleException: ошибка инициализация: java.lang.NullPointerException в org.apache.catalina.core.StandardContext.start (StandardContext.java:4380) в org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1045) в org.apache.catalina.core.StandardHost.start (StandardHost.java:785) в org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1045) в org.apache.catalina.core.StandardEngine.start (StandardEngine.java:445) в org.apache.catalina.core.StandardService.start (StandardService.java:519) в org.apache.catalina.core.StandardServer.start (StandardServer.java:710) в org.apache.catalina.startup.Catalina.start (Catalina.java:581) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:289) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:414)

* * И тысяча сорок-девять

18 января 2011 20:36:47 org.apache.catalina.mbeans.ServerLifecycleListener createMBeans SEVERE: createMBeans: Throwable java.lang.NullPointerException в org.apache.catalina.mbeans.MBeanUtils.createObjectName (MBeanUtils.java:1086) в org.apache.catalina.mbeans.MBeanUtils.createMBean (MBeanUtils.java:504) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:570) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:366) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:535) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:498) вorg.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:656) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:628) в org.apache.catalina.mbeans.ServerLifecycleListener.createMBeans (ServerLifecycleListener.java:278) в org.apache.catalina.mbeans.ServerLifecycleListener.lifecycleEvent (ServerLifecycleListener.java:129) в org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:119) в org.apache.catalina.core.StandardServer.start (StandardServer.java:703) в org.apache.catalina.startup.Catalina.start (Catalina.java:581) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:289) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:414)

Редактировать # 4

Я добавил структуру папок / Stable / localhost в папку conf. Также добавлены как host-manager.xml, так и manager.xml.

Все еще не работает.

Редактировать # 5

Я думаю, что получил, ну, я обслуживаю страницы html и cfml с некоторыми ошибками в файлах журнала.

<Service name="Stable">
        <Connector 
            port="80" 
            protocol="HTTP/1.1"                
            connectionTimeout="20000" />

        <Engine name="Stable" defaultHost="localhost">
            <Host 
                name="localhost"  
                appBase="C:\websites\test\stable\">

                <Context docBase="C:\websites\test\stable\" path="" />              
            </Host>
        </Engine>
  </Service>

Ошибка:

18 января 2011 11:31:40 org.apache.catalina.core.StandardContext resourcesStart SEVERE: Ошибка запуска статические ресурсы java.lang.IllegalArgumentException: База документов C: \ sites \ test \ stable \ manager делает не существует или не читается Каталог »

Ответы [ 2 ]

3 голосов
/ 18 января 2011

Я думаю, что вы на правильном пути, но вам просто не хватает некоторых дочерних элементов, которые перечислены в спецификации для элемента Service.

Я думаю, вы просто забыли элементы Engine и Host , которые являются прародителями и родителями элемента Context .

<Service name="stable">

     <Connector port="80" protocol="HTTP/1.1" 
           maxThreads="150" connectionTimeout="20000"/>

     <Engine name="stable" defaultHost="localhost">
         <Host name="localhost1" appBase="webapp1">
             <Context docBase="C:\websites\test\stable\" />
        </Host>
     </Engine>

</Service>


<Service name="release">

    <Connector port="81" protocol="HTTP/1.1" 
           maxThreads="150" connectionTimeout="20000"/>

    <Engine name="release" defaultHost="localhost2">
         <Host name="localhost2" appBase="webapp2">
             <Context docBase="C:\websites\test\release\" />
         </Host>
     </Engine>

</Service>

Для получения дополнительной информации и более подробного примера, который определяет два элемента службы, один на порту 8080 и один на порту 9080, см. Этот пост списка рассылки:

http://www.mail-archive.com/users@tomcat.apache.org/msg44729.html

0 голосов
/ 25 января 2011

Это работает для меня:

<Service name="Stable">
    <Connector 
        port="80" 
        protocol="HTTP/1.1"                
        connectionTimeout="20000" />

    <Engine name="Stable" defaultHost="localhost">
        <Host 
            name="localhost"  
            appBase="C:\websites\test\stable\">

            <Context docBase="C:\websites\test\stable\" path="" />              
        </Host>
    </Engine>

...