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?
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.