Acessando WebContext a partir de um Socket

Olá,

Estou iniciando um socket de dentro da minha aplicação web, mas preciso acessar um Bean de serviço dentro do meu contexto web.

Como faço para passar esse contexto web para o meu socket?

Att.

Não é mais fácil disponibilizar a informação que precisa em um web service e consumir a partir do socket?

Oi Darlan.

Eu preciso na verdade gravar informações no banco.

Entendi a sua estratégia e acho que da pra fazer sim, apesar de nunca ter trabalhado com WS.

Se vc tiver algum exemplo simples pra compartilhar eu te agradeço.

Você precisa definir se prefere utilizar um WS REST ou SOAP.
Depois de definir isso, fica fácil achar exemplos na internet.
Se é algo simples, eu sugiro que vá de REST mesmo.

Darlan,

Obrigado, consegui fazer a parte da aplicação que lida com o socket enviar os dados via Rest para a parte Web.

Meu problema agora é o inverso. Preciso que a aplicação Web pegue “serviços” da parte socket.

Fiz o mesmo tipo de implementação, mas aparecem outros erros de classes não encontradas. É como se a parte socket não tivesse acesso as LIBs.

Eu recebi uma implementação em Groove onde o cara cria um WB e vai de boa, ele simplesmente faz a chamada do método main da classe e tudo sobe normalmente:

import socket.Server

class BootStrap {

def init = { servletContext -> Server.main()
}
def destroy = {
}

}

Server.java

package socket;

import codec.CodecFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

import java.io.IOException;
import java.net.InetSocketAddress;
public class Server {
private static final int PORT = 4071;
static final int capacity = 2048;

public static void main(String[] args) throws IOException {
    NioSocketAcceptor acceptor = new NioSocketAcceptor();
    acceptor.getFilterChain().addLast("logger", new LoggingFilter());
    acceptor.getFilterChain().addLast("protocol", new ProtocolCodecFilter(new CodecFactory()));
    acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));
    acceptor.setHandler(new Handler());
    acceptor.getSessionConfig().isTcpNoDelay();
    acceptor.setCloseOnDeactivation(true);
    acceptor.setReuseAddress(true);
    acceptor.getSessionConfig().setReadBufferSize(capacity);
    acceptor.getSessionConfig().setKeepAlive(true);
    acceptor.bind();
}

}