Rodar aplicativo na inicialização do tomcat [RESOLVIDO]

Pessoal bom dia!

Quero rodar um aplicativo (servidorzinho de socket) junto com a inicialização do tomcat, para que ele tenha acesso as libs que o tomcat usa.

tem como fazer isso?

Sim…
Use Listener de contexto, para manipular eventos de deploy/undeploy.

ok. vou pesquisar sobre isso e quando testar eu posto o resultado.

obrigado!

criei uma classe de listener

package br.com.lima;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("MyListener.contextDestroyed()");
		
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("MyListener.contextInitialized()");		
	}

}

configurei o web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>testeserver</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>br.com.lima.MyListener</listener-class> </listener> </web-app>

porem nao funciona, da erro no arquivo web.xml

alguem sabe me dizer oq ha de errado?

Que erro?
Obs - aplicativo servlet 3.0 não precisa declara no xml, apenas use as anotações.

da erro 404 pagina nao encontrada.

qndo tiro a configuracao do web.xml ele funciona normal.

qual eh a anotacao para marcar uma classe como contextListener?

[quote=mauricioadl]da erro 404 pagina nao encontrada.

qndo tiro a configuracao do web.xml ele funciona normal.

qual eh a anotacao para marcar uma classe como contextListener?[/quote]

Mas isso não é erro…404 é q a pagina index não foi encontrada…kkkk
Se seu listener esta com erro, vai gerar o log no tomcat…veja la que esta descrito oq vc fez de errrado…

coloquei com anotacao mais o listener nao eh disparado. segue a classe:

[code]package br.com.lima;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyListener implements ServletContextListener {

@Override
public void contextDestroyed(ServletContextEvent arg0) {
	System.out.println("MyListener.contextDestroyed()");
	
}

@Override
public void contextInitialized(ServletContextEvent arg0) {
	try {
		ServerSocket s = new ServerSocket(12345);
		Socket c = s.accept();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}
[/code]

outra dica?

Não tem mais dicas… é simples assim…
Alguma coisa ta errada ai…é so fazer deploy do war de boa…

o pior q a aplicacao nao tem nada. apenas uma classe que eh o listener e uma pagina index.html com um ola escrito.

ta tenso!

Aqui sempre funcionou…kkkk
Quando vc configura algo de errado, o container faz o log…verifique ai…

localhost.2011-11-28.txt

28/11/2011 14:43:49 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
28/11/2011 14:43:49 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
28/11/2011 14:43:49 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded(‘org.apache.jasper.compiler.TldLocationsCache’, ‘org.apache.jasper.compiler.TldLocationsCache@1c888d9’)


catalina.2011-11-28.txt

28/11/2011 14:43:47 org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.22.
28/11/2011 14:43:47 org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], random [true].
28/11/2011 14:43:48 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-apr-8080”]
28/11/2011 14:43:49 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-apr-8009”]
28/11/2011 14:43:49 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1804 ms
28/11/2011 14:43:49 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
28/11/2011 14:43:49 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.20
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor testeserver.xml from C:\Users\Treinamento\Documents\Programas\apache-tomcat-7.0.20\conf\Catalina\localhost
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory host-manager
28/11/2011 14:43:50 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory manager
28/11/2011 14:43:50 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
28/11/2011 14:43:50 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-apr-8080”]
28/11/2011 14:43:50 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-apr-8009”]
28/11/2011 14:43:50 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1147 ms

Cade o log do deploy do seu war?
Pelo log não foi feito não…

foi sim:

INFO: Deploying configuration descriptor testeserver.xml from C:\Users\Treinamento\Documents\Programas\apache-tomcat-7.0.20\conf\Catalina\localhost
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDirectory

[quote=mauricioadl]foi sim:

INFO: Deploying configuration descriptor testeserver.xml from C:\Users\Treinamento\Documents\Programas\apache-tomcat-7.0.20\conf\Catalina\localhost
28/11/2011 14:43:49 org.apache.catalina.startup.HostConfig deployDirectory [/quote]

Acho q não…
Normalmente ele log o nome do WAR…
Como vc ta fazendo?

eu nao crio o arquivo .war eu uso contexto via config de xml.

[code]<?xml version="1.0" encoding="iso-8859-1"?>

<Context path="/testeserver" docBase=“C:/java/testeserver/WebContent”
reloadable=“true” privileged=“true” crossContext=“true”>
</Context>[/code]

Outro modo:

<!-- no web.xml -->
	<servlet>
		<servlet-name>meuServlet</servlet-name>
		<servlet-class>
			br.com.pacote.SuaClasse
		</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>

<!-- SuaClasse -->

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

public class SuaClasse extends HttpServlet {

	
	@Override
	public void init() throws ServletException {
		
		//Faça aqui seu código!
		
		super.init();
	}

}

Veja se resolve!

olá vinicius.

meu problema não é com servlet e sim com contextlistener.

Obrigado!

[quote=mauricioadl]eu nao crio o arquivo .war eu uso contexto via config de xml.

[code]<?xml version="1.0" encoding="iso-8859-1"?>

<Context path="/testeserver" docBase=“C:/java/testeserver/WebContent”
reloadable=“true” privileged=“true” crossContext=“true”>
</Context>[/code][/quote]

Pois é…isso não é deploy de war…com vc quer disparar um listener de deploy sem deploy?

acho q isso nao tem relação ja que a aplicação esta sendo publicada. pois ela funciona, pelo menos o ola mundo do index.html aparece.