Hallo,
ich wollte mich mal etwas mit Mina beschäftigen habe jedoch ein Problem:
Man benötigt ja slf4j... Das ist ein Logging API. Habs mir runtergeladen und da ich nicht wusste welche Libs ich brauche.. einfach mal alle eingebunden. Problem:
Stackoverflow, dabei habe ich ein simples Tutorial von der Minaseite ausprobiert:
public class MinaTimeServer {
private static final int PORT = 9123;
public static void main(String[] args) throws IOException {
ByteBuffer.setUseDirectBuffers(false);
ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
IoAcceptor acceptor = new SocketAcceptor();
SocketAcceptorConfig cfg = new SocketAcceptorConfig();
cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
acceptor.bind( new InetSocketAddress(PORT), new TimeServerHandler(), cfg);
System.out.println("MINA Time server started.");
}
}
public class TimeServerHandler extends IoHandlerAdapter {
public void exceptionCaught(IoSession session, Throwable t) throws Exception {
t.printStackTrace();
session.close();
}
public void messageReceived(IoSession session, Object msg) throws Exception {
String str = msg.toString();
if( str.trim().equalsIgnoreCase("quit") ) {
session.close();
return;
}
Date date = new Date();
session.write( date.toString() );
System.out.println("Message written...");
}
public void sessionCreated(IoSession session) throws Exception {
System.out.println("Session created...");
if( session.getTransportType() == TransportType.SOCKET )
((SocketSessionConfig) session.getConfig() ).setReceiveBufferSize( 2048 );
session.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
}
}
Dieser Code sollte doch ansich funktionieren, vorallem da es ja von der offiziellen Seite ist.
Ich habe schon viel von Mina gehört und dachte ansich es wäre gut, aber ich muss sagen, dass die Konfiguration nicht unbedingt einfach ist. Vorallem weil ich doch evt. garkeinen Log will ?! Also vlt. gibt es ja jemand der mir da mal helfen kann...
Gruß Chris
Hier ist die Fehlermeldung:
Exception in thread "main" java.lang.StackOverflowError
at java.util.HashMap.get(Unknown Source)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:67)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:289)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:289)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
Dieser Fehler wiederholt sich unendlich^^ Deshalb der Stackoverflow... Das scheint sich iwie rekursiv immerwieder zu wiederholen...
ich wollte mich mal etwas mit Mina beschäftigen habe jedoch ein Problem:
Man benötigt ja slf4j... Das ist ein Logging API. Habs mir runtergeladen und da ich nicht wusste welche Libs ich brauche.. einfach mal alle eingebunden. Problem:
Stackoverflow, dabei habe ich ein simples Tutorial von der Minaseite ausprobiert:
public class MinaTimeServer {
private static final int PORT = 9123;
public static void main(String[] args) throws IOException {
ByteBuffer.setUseDirectBuffers(false);
ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
IoAcceptor acceptor = new SocketAcceptor();
SocketAcceptorConfig cfg = new SocketAcceptorConfig();
cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
acceptor.bind( new InetSocketAddress(PORT), new TimeServerHandler(), cfg);
System.out.println("MINA Time server started.");
}
}
public class TimeServerHandler extends IoHandlerAdapter {
public void exceptionCaught(IoSession session, Throwable t) throws Exception {
t.printStackTrace();
session.close();
}
public void messageReceived(IoSession session, Object msg) throws Exception {
String str = msg.toString();
if( str.trim().equalsIgnoreCase("quit") ) {
session.close();
return;
}
Date date = new Date();
session.write( date.toString() );
System.out.println("Message written...");
}
public void sessionCreated(IoSession session) throws Exception {
System.out.println("Session created...");
if( session.getTransportType() == TransportType.SOCKET )
((SocketSessionConfig) session.getConfig() ).setReceiveBufferSize( 2048 );
session.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
}
}
Dieser Code sollte doch ansich funktionieren, vorallem da es ja von der offiziellen Seite ist.
Ich habe schon viel von Mina gehört und dachte ansich es wäre gut, aber ich muss sagen, dass die Konfiguration nicht unbedingt einfach ist. Vorallem weil ich doch evt. garkeinen Log will ?! Also vlt. gibt es ja jemand der mir da mal helfen kann...
Gruß Chris
Hier ist die Fehlermeldung:
Exception in thread "main" java.lang.StackOverflowError
at java.util.HashMap.get(Unknown Source)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:67)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:289)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:289)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:209)
Dieser Fehler wiederholt sich unendlich^^ Deshalb der Stackoverflow... Das scheint sich iwie rekursiv immerwieder zu wiederholen...