mina

webservice技术之巅峰对决(httpclient远程调用通用技术详解)

我怕爱的太早我们不能终老 提交于 2019-12-01 14:12:20
在工作中,经常会遇到不同公司系统之间的远程服务调用。远程调用技术非常多,如rmi、netty、mina、hessian、dubbo、Motan、springcloud、webservice等等。虽然在互联网的今天,可能大多数公司使用的都是些高大上的分布式rpc调用技术,在多数程序员眼里都觉得webservice技术非常的low,但博主不得不说它是公司与公司之间进行系统对接的最佳推荐技术。 推荐原因: 1.webservice技术是建立在http+xml基础之上的,非常的轻量级。 2.webservice技术可通过wsdl来定义调用关系,双方系统可根据wsdl快速的进行开发对接。 3.webservice是一种标准,有各种语言对它的实现,支持异构系统之间的对接。 4.必要情况下,还可以使用httpclient作为客户端进行调用,以降低依赖。 一、webservice原理: 客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>通过http调用发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)——>处理SOAP请求——> 调用WebService接口——>生成SOAP应答 ——> Web服务器通过http的方式返回客户端 二、webservice通用调用技术httpclient(JAVA版) 工具类: package com

How To Handle Incoming Files In Apache Mina SSHD SFTP Server in Java

隐身守侯 提交于 2019-12-01 09:26:32
Currently i am working on a SFTP protocol.I have created SFTP client Using Jsch Library and SFTP Server using Apache Mina Sshd library.I have made connection between them and can successfully send files to SFTP server.Now i am working on creating a SFTP server side file handler that handles the incoming files.As a example let say SFTP server can receive files from SFTP client but currently in my implementation there is no way to notify when file is arrived into server.I just go server root folder and see if there is a files available.That is how i know if files are arrived. I would like to

mina 之 java.lang.OutOfMemoryError

怎甘沉沦 提交于 2019-12-01 06:57:41
前段时间在测试过程中发现了mina框架的问题:当mina一次传输的文件超过一定值(如55m)或者连续传输文件的次数过于频繁,就会内存溢出: org.apache.mina.filter.codec.ProtocolEncoderException:java.lang.OutOfMemoryError: Java heap space atorg.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:217) atorg.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:361) atorg.apache.mina.common.support.AbstractIoFilterChain.access$1300(AbstractIoFilterChain.java:53) atorg.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(AbstractIoFilterChain.java:659) atorg.apache.mina

Dubbo重要概念介绍

非 Y 不嫁゛ 提交于 2019-11-30 19:55:34
1.proxyFactory:就是为了获取一个接口的代理类,例如获取一个远程接口的代理。 它有2个方法,代表2个作用 a.getInvoker:针对server端,将服务对象,如DemoServiceImpl包装成一个Invoker对象。 b.getProxy :针对client端,创建接口的代理对象,例如DemoService的接口。 2.Wrapper:它类似spring的BeanWrapper,它就是包装了一个接口或一个类,可以通过wrapper对实例对象进行赋值 取值以及制定方法的调用。 3.Invoker:它是一个可执行的对象,能够根据方法的名称、参数得到相应的执行结果。 它里面有一个很重要的方法 Result invoke(Invocation invocation), Invocation是包含了需要执行的方法和参数等重要信息,目前它只有2个实现类RpcInvocation MockInvocation 它有3种类型的Invoker 1.本地执行类的Invoker server端:要执行 demoService.sayHello,就通过InjvmExporter来进行反射执行demoService.sayHello就可以了。 2.远程通信类的Invoker client端:要执行 demoService.sayHello,它封装了DubboInvoker进行远程通信

Mina实现Socket通信完整过程

喜夏-厌秋 提交于 2019-11-28 07:24:39
[TOC] 前两章节已经完整的介绍了理论部分,今天我们就利用这些理论来实现tcp协议的c/s 通信。首先我们简单回顾下之前的介绍, 在mina中我们的客户端和服务端简直就是一模一样,只是我们用不同适配器。但是他的数据处理流程是一样的。今天我们就重点看看如何建立服务端、客户端 并且处理两者之间的消息通信处理 服务端 服务端和客户端不同的就是我们创建的监听对象不同而已,客户端发送消息到服务端,服务端需要经历过滤器的处理才能到达消息中心,但是在过滤器中我们就需要将消息进行解码,然后才会到消息接收的地方处理我们的业务。正常情况下我们处理完消息需要对客户端进行回应。回应的时候也会经历过滤器中的编码逻辑,进行数据编码然后发送。信息发送到客户端我们可以看成服务端的方向。也是需要进行编解码的。下面看看服务端的创建代码 //创建监听对象 IoAcceptor acceptor = new NioSocketAcceptor(); TextLineCodecFactory textLineCodecFactory = new TextLineCodecFactory(Charset.forName("utf-8"), LineDelimiter.WINDOWS.getValue(), LineDelimiter.WINDOWS.getValue()); //添加过滤器 acceptor

Mina实现Socket通信完整过程

做~自己de王妃 提交于 2019-11-28 07:10:27
目录 服务端 客户端 通信 自定义工厂编解码 解码器 编码器 总结 # 加入战队 微信公众号 title: Mina服务端客户端通信 date: 2018-09-30 09:00:30 tags: - [mina] - [tcp] categories: - [编程] permalink: zxh --- 前两章节已经完整的介绍了理论部分,今天我们就利用这些理论来实现tcp协议的c/s 通信。首先我们简单回顾下之前的介绍, 在mina中我们的客户端和服务端简直就是一模一样,只是我们用不同适配器。但是他的数据处理流程是一样的。今天我们就重点看看如何建立服务端、客户端 并且处理两者之间的消息通信处理 服务端 服务端和客户端不同的就是我们创建的监听对象不同而已,客户端发送消息到服务端,服务端需要经历过滤器的处理才能到达消息中心,但是在过滤器中我们就需要将消息进行解码,然后才会到消息接收的地方处理我们的业务。正常情况下我们处理完消息需要对客户端进行回应。回应的时候也会经历过滤器中的编码逻辑,进行数据编码然后发送。信息发送到客户端我们可以看成服务端的方向。也是需要进行编解码的。下面看看服务端的创建代码 //创建监听对象 IoAcceptor acceptor = new NioSocketAcceptor(); TextLineCodecFactory

Why does select() consume so much CPU time in my program?

大憨熊 提交于 2019-11-28 06:48:48
I have several Java applications that use MINA, and all of them use 20 MINA threads. One application serves around 10,000 concurrent connections, that are usually idle but receive input sometimes. 20 is likely a reasonable threadcount for that application, although I haven't exactly profiled it (which this question is getting at). Another application serves only around 15 connections at a time but initiates the IO work so they are very busy, and has 20 MINA threads anyway, which is obviously too many. The thing that's strange to me is both applications always devote about 30%, sometimes as

Mina各组件介绍

孤人 提交于 2019-11-28 04:55:50
Mina各组件介绍 上一篇文章已经系统的介绍了Mina的运行流程,Apache推出的Mina性能上很是高效,上章节我们知道内部有很多的类,各个类之间的依赖也是很多,他们之家都是相互依赖。 下面主要看看各个类中的方法。本篇就当是Mina的文档了。一下总结来源于网络: IoService 这个接口是服务端IoAcceptor、客户端IoConnector 的抽象,提供IO 服务和管理IoSession的功能,它有如下几个常用的方法: + <font color="blue">TransportMetadata getTransportMetadata()</font>: 这个方法获取传输方式的元数据描述信息,也就是底层到底基于什么的实现,譬如:nio、apr 等。 + <font color="blue">void addListener(IoServiceListener listener)</font>: 这个方法可以为IoService 增加一个监听器,用于监听IoService 的创建、活动、失效、空闲、销毁,具体可以参考IoServiceListener 接口中的方法,这为你参与IoService 的生命周期提供了机会。 + <font color="blue">void removeListener(IoServiceListener listener)</font>: