Olá novamente.
Bem, eu entendi o que você explicou, mas tem um problema, são aplicações diferentes rodando paralelamente na minha máquina.
Tenho uma classe principal (com método main) que starta uma thread que instancia um objeto de uma classe que abre a porta USB. Essa Thread fica escutando essa porta.
Tenho um servlet que também precisa de comunicar pela mesma porta USB. Esse servlet precisa usar o objeto instanciado pela Thread já que uma vez aberta a porta USB ela fica presa ao objeto que a abriu.
O que eu posso fazer?
Obrigado.
A outra
[quote=sergiotaborda][quote=ecteruel]Olá pessoal.
Tenho um problemão aqui e estou há dias tentando resolver sem sucesso.
Tenho uma aplicação cliente-servidor baseada em Servlet e JSP que acessa uma porta USB (enviando dados) e uma outra aplicação (Thread) que escuta essa porta consantemente. Para fazer a comunicação com a porta física estou usando uma JNI.
Acontece que quando a aplicação (thread) abre a porta USB, essa abertura é associada a um objeto que foi instanciado para esse fim.
Quando a aplicação (Servlet/JSP) tenta enviar uma informação pela porta, ela já esta aberta associada a um objeto da outra aplicação(Thread). Sendo assim, eu teria de enviar a informação através do objeto que abriu a porta USB, o que eu não estou conseguindo.
Há alguma maneira de compartilhar esse objeto que abriu a porta entre duas aplicações?
[/quote]
Sim .
Crie uma classe que implementa a interface javax.servlet.ServletContextListener. Este tipo de classe vc configura no web.xml e o método contextInitialized(ServletContextEvent) corre aquando da inicialização da aplicação 1 unica vez. Dentro desse método vc cria o objeto que comu8nica com o USB e a thread.
Depois vc vai adiconar esse objeto no contexto da aplicação com
private ServletContext ctx;
public void contextInitialized(ServletContextEvent e){
// eu não sei qual é a sua classe tou chamado de ObjetoUSB
ObjetoUSB objetoUSB = ... // inicializa
ctx = e.getServletContext();
ctx.setAttribute("objUSB", objetoUSB);
}
Isto deixa o objeto no contexto da plicação que é acessivel de qualquer página. por exemplo:
/// dentro de um página jsp
ObjetoUSB objetoUSB = (ObjetoUSB ) application.getAttribute("objUSB");
Este código vai retornar o mesmo objeto criado no codigo acima.
E ai vc pode manipulá-lo como quiser. É isso.
P.S. Não chame Thread de aplicação porque confunde. Chame Thread de thread , que todo o mundo entende. [/quote]