LifecycleException: Protocol handler instantiation failed:

29 respostas
I

Olá pessoal. Estou com este problema ao tentar incializar o Apache Tomcat/5.0.28. Tentei reinstalá-lo mas o problema persiste:

SEVERE: Catalina.start

LifecycleException:  Protocol handler instantiation failed: Nava.lang.NullPointerException at  org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.java:1368)

at org.apache.catalina.core.StandardService.initialize(StandardService.java:609)

at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2384)

at org.apache.catalina.startup.Catalina.load(Catalina.java:507)

at org.apache.catalina.startup.Catalina.load(Catalina.java:528)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)

O esquema é que ele estava funcionando normalmente até antes de executar o Windows Update, onde o service pack 2 foi instalado juntamente com alguns “fixes”. Desabilitei o firewall e nada… estou usando no server.xml conexão https e não tenho IIS instalado. Alguém já viu algo parecido? Grato T+

29 Respostas

E

“iktuz”:
Olá pessoal. Estou com este problema ao tentar incializar o Apache Tomcat/5.0.28. Tentei reinstalá-lo mas o problema persiste:

SEVERE: Catalina.start

LifecycleException:  Protocol handler instantiation failed: Nava.lang.NullPointerException at  org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.java:1368)

at org.apache.catalina.core.StandardService.initialize(StandardService.java:609)

at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2384)

at org.apache.catalina.startup.Catalina.load(Catalina.java:507)

at org.apache.catalina.startup.Catalina.load(Catalina.java:528)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)

O esquema é que ele estava funcionando normalmente até antes de executar o Windows Update, onde o service pack 2 foi instalado juntamente com alguns “fixes”. Desabilitei o firewall e nada… estou usando no server.xml conexão https e não tenho ISS instalado. Alguém já viu algo parecido? Grato T+

Kct, cara… muito estranho… vc não mexendo nos arquivos de configuração? Ou então copiou um webapp seu de outro server para dentro deste? tente retirá-lo e restartar o tomcat …

Firewall não é, pq o tomcat levanta … porém fica inacessível … se o IIS estivesse rodando, daria erro de “Address already in use” … já esse seu, muuuitooo estranho …

Boa sorte!

I

Copiei o webapp sim… isto causa problemas?

E

Não deveria, não éh ? :wink:

Cara, eu migrei do Tomcat4.1.27 para o 5.5.4 + Java Tiger e tive problemas sim … principalmente no meu web.xml do meu webapp … eu tinha meu servlets mapeados assim:

<servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>

e justamente esse invoker dava pau … tente comentá-lo, ou então mapear todos seus servlets um a um …

Abraço!

I

Acabei de fazer um teste aqui… com o server.xml padrão, ou seja, http 8080 ele entra beleza. Se coloco o arquivo de configuração para trabalhar com https 443 dá o problema. Estava usando ele sem problema até as atualizações do windows. O connector está assim:

<Connector
keystorePass=“12345”
scheme=“https”
port=“443”
sslProtocol=“TLS”
redirectPort="-1"
enableLookups=“true”
keystoreFile=“C:\Documents and Settings\user.keystore”
protocol=“TLS”
keystore=“C:\Documents and Settings\user.keystore”
clientauth=“false”
keypass=“12345”
secure=“true”
keytype=“JKS”>

&lt;Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory" keystorePass="suntech"/&gt;

&lt;/Connector&gt;
E

Ih kra… agora complicou … vc pegou esse exemplo de HTTPS do server.xml que vem no tomcat, ou está usando do seu tomcat antigo? Eu nunca precisei configurar https, mas esses caminhos que vc especificou existem “C:\Documents and Settings\user.keystore” ???

Qual tomcat vc tá usando?

Tem alguma documentação sobre SSL no Tomcat 5.5.5x no link abaixo:
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html

té+

E

E aí … como está indo? Conseguiu resolver?

I

Ainda não… tentei configurar um novo connector pela interface de adminstração do próprio Tomcat 5.0.28 mas o erro persiste. O engraçado é que o http funciona normalmente mas é tentar colocar https acontece este problema. Não sei o que pode ser… estou esperando que saia a versão 5.0.30 que ainda está em beta pra ver. Mas sinceramente acho que deve ser algum problema com o Windows, porque isso começou a ocorrer depois de ter instalado os updates dele. Antes ele funcionava normalmente.

E

vc chegou a simplesmente habilitar o HTTPS que vem junto no SERVER.XML de exemplo (comentado) ? Sem nenhuma configuração adicional …

I

Não tentei não… vou verificar agora.

I

Não funcionou. Mesmo problema ao instanciar o objeto connector.

E

Eu fiz aqui e funcionou … tive de rodar a linha de comando abaixo:

%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

com a senha changeit … ele criou um arquivo C:\Documents and Settings[meu usuario].keystore …

descomentei as linhas do SERVER.XML e funcionou … changeit eh a senha default do tomcat …

E

Se vc quiser especificar uma senha diferente de changeit, gere novamente o arquivo .keystroke pela linha de comando do post acima, e altere seu server.xml, adicionando o parâmetro keystorePass=“testando” …

&lt;!-- Define a SSL HTTP/1.1 Connector on port 8443 --&gt; &lt;Connector port=&quot;8443&quot; keystorePass=&quot;testando&quot; maxThreads=&quot;150&quot; minSpareThreads=&quot;5&quot; maxSpareThreads=&quot;75&quot; enableLookups=&quot;false&quot; disableUploadTimeout=&quot;true&quot; acceptCount=&quot;100&quot; scheme=&quot;https&quot; secure=&quot;true&quot; clientAuth=&quot;false&quot; sslProtocol=&quot;TLS&quot; /&gt;

E

mais dúvidas sobre o SSL no Tomcat, visite o link …
http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html

Abraço!

I

Ok, grato pelas dicas… vou fazer mais esta tentativa.

E

Espero que funcione!

Abraço.

I

Não funcionou. Fiz como tu disse que era mais ou menos como eu já estava fazendo antes do problema começar. Ainda ocorre o mesmo problema. Isso só pode ser problema com o Windows, porque como te disse, antes de executar os updates do Windows, o tomcat funcionava direito, agora não mais. Vou testar com a versçao 5.0.30 pra ver se o problema persiste. Valeu T+

E

Meu micro está rodando winxp sp2 … com certeza não é.

qual a senha que vc está colocando no keytool ? tentou apagar seu .keystore e recriá-lo ? vc especificou a senha no server.xml ?

I

Sim, a mesma senha que especifiquei na geração do .keystore está no server xml. Tu está com que versão do Tomcat? Os updates que fizeste no Windows incluem os outros “fixies”?

E

que estranho… aqui funciona… o erro não tem mudado? eh sempre o mesmo?

Tomcat 5.5.4, rodando Java 1.5.0_01 …

Com certeza, até os 2 últimos que rolaram por esses dias …

I

Sempre o mesmo erro, inclusive já reinstalei o Tomcat pra ver se alterava algo, mas nada. O problema é que ele parou de funcionar o https de uma hora pra outra, não lembro de ter feito nehuma alteração no tomcat pra ter parado, exceto as atualizações do Windows mesmo.

E

Kra, posta teu SERVER.XML aqui …
e nos teus Logs do Tomcat, já olhou? nenhuma informação adicional ?

I

Esta é a parte de criação do connector https:

<Connector
keystorePass=“teste”
scheme=“https”
port=“443”
sslProtocol=“TLS”
redirectPort="-1"
enableLookups=“true”
keystoreFile=“C:\Documents and Settings\jose.keystore”
protocol=“TLS”
keystore=“C:\Documents and Settings\jose.keystore”
clientauth=“false”
keypass=“teste”
secure=“true”
keytype=“JKS”>

&lt;Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory" keystorePass="teste"/&gt;

&lt;/Connector&gt;

O log de erro é:

19/01/2005 15:21:18 org.apache.catalina.startup.Catalina load

SEVERE: Catalina.start

LifecycleException:  Protocol handler instantiation failed: java.lang.NullPointerException

at org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.java:1368)

at org.apache.catalina.core.StandardService.initialize(StandardService.java:609)

at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2384)

at org.apache.catalina.startup.Catalina.load(Catalina.java:507)

at org.apache.catalina.startup.Catalina.load(Catalina.java:528)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)

19/01/2005 15:21:18 org.apache.catalina.startup.Catalina load

SEVERE: Null component Catalina:type=protocolHandler,className=null

19/01/2005 15:21:55 org.apache.catalina.startup.Catalina start

SEVERE: Catalina.start:

LifecycleException:  Protocol handler start failed: java.lang.NullPointerException

at org.apache.coyote.tomcat5.CoyoteConnector.start(CoyoteConnector.java:1529)

at org.apache.catalina.core.StandardService.start(StandardService.java:489)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)

at org.apache.catalina.startup.Catalina.start(Catalina.java:556)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

19/01/2005 15:21:55 org.apache.catalina.startup.Catalina start

INFO: Server startup in 37813 ms
E

Este é meu server.xml, do Tomcat 5.5.4 … veja se ajuda.

&lt;Server port="8005" shutdown="SHUTDOWN"&gt;

  &lt;!-- Define the Tomcat Stand-Alone Service --&gt;
  &lt;Service name="Catalina"&gt;

    &lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&gt;
    &lt;Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="0" disableUploadTimeout="true"
			   compression="on"
			   compressionMinSize="2048"
			   noCompressionUserAgents="gozilla, traviata"
			   compressableMimeType="text/html,text/xml" /&gt;

    &lt;!-- Define a SSL HTTP/1.1 Connector on port 8443 --&gt;
    &lt;Connector port="8443" keystorePass="testando"
               maxThreads="150" minSpareThreads="5" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" /&gt;

    &lt;!-- Define an AJP 1.3 Connector on port 8009 --&gt;
    &lt;Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /&gt;


    &lt;!-- Define the top level container in our container hierarchy --&gt;
    &lt;Engine name="Catalina" defaultHost="localhost"&gt;

      &lt;!-- Define the default virtual host
           Note&#58; XML Schema validation will not work with Xerces 2.2.
       --&gt;
      &lt;Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false" /&gt;

    &lt;/Engine&gt;

  &lt;/Service&gt;

&lt;/Server&gt;
I

O arquivo default do server.xml que tenho aqui é igual ao seu só que removi os conectores http e AJP.

E

Já tentou tirar esse Factory fora? Segundo o Tomcat 5.0 Documentation (no link http://jakarta.apache.org/tomcat/tomcat-5.0-doc/ssl-howto.html), só precisaria do trecho de código abaixo, especificando a senha “teste” (a default eh changeit):

&lt;-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt; &lt;!-- &lt;Connector className=&quot;org.apache.coyote.tomcat5.CoyoteConnector&quot; port=&quot;8443&quot; minProcessors=&quot;5&quot; maxProcessors=&quot;75&quot; enableLookups=&quot;true&quot; disableUploadTimeout=&quot;true&quot; acceptCount=&quot;100&quot; debug=&quot;0&quot; scheme=&quot;https&quot; secure=&quot;true&quot;; clientAuth=&quot;false&quot; sslProtocol=&quot;TLS&quot;/&gt; --&gt;

Até+

I

tentei tirar o factory sim, mas o problema persiste.

E

“iktuz”:
<Connector
keystorePass=“teste”
scheme=“https”
port=“443”
sslProtocol=“TLS”
redirectPort="-1"
enableLookups=“true”
keystoreFile=“C:\Documents and Settings\jose.keystore”
protocol=“TLS”
keystore=“C:\Documents and Settings\jose.keystore”
clientauth=“false”
keypass=“teste”
secure=“true”
keytype=“JKS”>

Cara, vc está especificando uns parâmetros que não existem… tente remover o keytype (o certo seria KEYSTORETYPE), keypass (vc já está especificando o parâmetro correto, que é KEYSTOREPASS), redirectPort … pode remover tb o keystorefile (se ele estiver no lugar default – e parece estar) … KEYSTORE tb não existe, somente KEYSTOREFILE …

Tente essas alteraçoes.

I

Muito sinistro… usei a tua configuração de connector mais o keystoreFile (porque sem ele dá FileNotFoundException…) e agora funcionou. Ainda não entendo é como antes funcionava. De qualquer modo o que importa é que está funcionando. Valeu as dicas! T+

<Connector port=“8443” keystorePass=“teste”
maxThreads=“150” minSpareThreads=“5” maxSpareThreads=“75”
enableLookups=“false” disableUploadTimeout=“true”
keystoreFile=“C:\Documents and Settings\jose.keystore”
acceptCount=“100” scheme=“https” secure=“true”
clientAuth=“false” sslProtocol=“TLS” />

E

O que importa é que está funcionando! :slight_smile:
Eh isso aí … o negócio é botar ele em produção agora …

Abraço!

Criado 18 de janeiro de 2005
Ultima resposta 19 de jan. de 2005
Respostas 29
Participantes 2