因为client是axis的,返回的格式必须是http格式所以
         // 创建接收数据的过滤器
        DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
        
        //过滤HTTP协议
         chain.addLast("myChin", new ProtocolCodecFilter(
          new HttpCodecFactory()));
...................
//在收到客户端发送的消息过来时
//收到的消息再返回给客户端
 public void messageReceived(IoSession session, Object message)
            throws Exception
    {
    
        //获取请求
     DefaultHttpRequest req = (DefaultHttpRequest) message;
     //获取消息体
     String body = req.getContent().getString(
                Charset.forName("utf-8").newDecoder());
    
        System.out.println("收到客户机发来的消息: " + body);        //构造响应消息
        DefaultHttpResponse resp= new DefaultHttpResponse();
        resp = SamplMinaServerHandler.getResponseMessage(req.getContent());
        
        // 测试将消息回送给客户端
        
        session.write(resp);
    }    //构造响应消息
public static DefaultHttpResponse getResponseMessage(IoBuffer msg)
throws Exception {
// 构造httpResponse对象

DefaultHttpResponse response = new DefaultHttpResponse(); // 设置http的状态
response.setStatus(HttpResponseStatus.OK); // 设置文档类型
response.setContentType("text/html"); // 设置文档内容
//收到的消息再返回给客户端
IoBuffer buffer = msg;

response.setContent(buffer); // 设置报文体的长度,必不可少.
response.setHeader("Content-Length:", "" + buffer.limit()); return response;
}
这样客户端为什么还是收不到消息,或者如何自己构造soap类型报文 返回给客户端??

解决方案 »

  1.   

    客户端能收到 一般字符串否?客户端设置 接受 Object否?实在不行,客户端代码贴上来看看。
      

  2.   

    HTTP 服务器有很多,为什么要自己再用 MINA 去实现呢?
      

  3.   

    做这个只是看看mina能否与axis做交互客户端的代码其实就是axis的基本代码,主要是想知道invoke回调接收的数据到底是啥,标准的soap协议?mina已经拼装好了啊.为什么axis还是接受不到?客户端的代码try
            {
                String endpoint = "http://10.85.4.111:8888/axis/sayHello.jws";            Service service = new Service();
                Call call = null;            call = (Call) service.createCall();            call.setOperationName(new QName(endpoint, "say"));
                call.setTargetEndpointAddress(new java.net.URL(endpoint));            String ret = (String) call.invoke(new Object[]
                {"zhangsan"});
                System.out.println("return value is " + ret);
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
            }
      

  4.   

    现在是对axis发送消息的过程改变了下,直接把数据发送到mina上去,而不用默认的发送到axis的web service里去,web service返回的东西mina一定能做到吧?也就是想实现用mina返回消息给axis客户端.不知道能否实现.