level 5
zkx4213
楼主
我刚看这个Mina,对着百度上的教程,为什么会出错?
为什么在private static Logger logger = Logger.getLogger(Demo1Server.class);
这个getLogger()方法会报错,还有就是为什么logger.error("服务端启动异常...",e)这个方法.error()点不出来呢?
还有就是那个log4j.properties配置完后要调用吗?怎么调用的?是在web.xml中配的吗?新手求教...
1.-------------------------------------------------------------------------------------------------------------
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.util.logging.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class Demo1Server {
//此处为什么会出错?
private static Logger logger = Logger.getLogger(Demo1Server.class);
private static int PORT = 3005;
public static void main(String[] args){
IoAcceptor acceptor = null;
try {
//创建一个非阻塞的server端的Socket
acceptor = new NioSocketAcceptor();
//设置过滤器(使用Mina提供的文本换行符编解码器)
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
//设置读取数据的缓冲区的大小
acceptor.getSessionConfig().setReadBufferSize(2048);
//读写通道10秒内无操作进入空闲状态
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
//绑定逻辑处理器
acceptor.setHandler(new Demo1ServerHandler());
//绑定端口
acceptor.bind(new InetSocketAddress(PORT));
logger.info("服务端启动成功... 端口号为:" +PORT );
} catch (Exception e) {
//此处的error方法点不出来,为什么?
logger.error("服务端启动异常...",e);
e.printStackTrace();
}
}
}
2.-------------------------------------------------------------------------------------------------------------
import java.util.Date;
import java.util.logging.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class Demo1ServerHandler extends IoHandlerAdapter{
public static Logger logger = Logger.getLogger(Demo1ServerHandler.class);
@Override
public void sessionCreated(IoSession session) throws Exception {
logger.info("服务端与客户端创建连接...");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
logger.info("服务端与客户端连接打开...");
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String msg = message.toString();
logger.info("服务端接收到的数据为:" + msg);
//服务端断开连接的条件
if("bye".equals(msg)) {
session.close();
}
Date date = new Date();
session.write(date);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
logger.info("服务端发送信息成功...");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
logger.info("服务端与客户端连接关闭...");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
logger.info("服务端进入空闲状态...");
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
//此处的error方法点不出来,为什么?
logger.error("服务端发送异常...",cause);
}
}
2013年12月31日 08点12分
1
为什么在private static Logger logger = Logger.getLogger(Demo1Server.class);
这个getLogger()方法会报错,还有就是为什么logger.error("服务端启动异常...",e)这个方法.error()点不出来呢?
还有就是那个log4j.properties配置完后要调用吗?怎么调用的?是在web.xml中配的吗?新手求教...
1.-------------------------------------------------------------------------------------------------------------
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.util.logging.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class Demo1Server {
//此处为什么会出错?
private static Logger logger = Logger.getLogger(Demo1Server.class);
private static int PORT = 3005;
public static void main(String[] args){
IoAcceptor acceptor = null;
try {
//创建一个非阻塞的server端的Socket
acceptor = new NioSocketAcceptor();
//设置过滤器(使用Mina提供的文本换行符编解码器)
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
//设置读取数据的缓冲区的大小
acceptor.getSessionConfig().setReadBufferSize(2048);
//读写通道10秒内无操作进入空闲状态
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
//绑定逻辑处理器
acceptor.setHandler(new Demo1ServerHandler());
//绑定端口
acceptor.bind(new InetSocketAddress(PORT));
logger.info("服务端启动成功... 端口号为:" +PORT );
} catch (Exception e) {
//此处的error方法点不出来,为什么?
logger.error("服务端启动异常...",e);
e.printStackTrace();
}
}
}
2.-------------------------------------------------------------------------------------------------------------
import java.util.Date;
import java.util.logging.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class Demo1ServerHandler extends IoHandlerAdapter{
public static Logger logger = Logger.getLogger(Demo1ServerHandler.class);
@Override
public void sessionCreated(IoSession session) throws Exception {
logger.info("服务端与客户端创建连接...");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
logger.info("服务端与客户端连接打开...");
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String msg = message.toString();
logger.info("服务端接收到的数据为:" + msg);
//服务端断开连接的条件
if("bye".equals(msg)) {
session.close();
}
Date date = new Date();
session.write(date);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
logger.info("服务端发送信息成功...");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
logger.info("服务端与客户端连接关闭...");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
logger.info("服务端进入空闲状态...");
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
//此处的error方法点不出来,为什么?
logger.error("服务端发送异常...",cause);
}
}