Wso2文件上传。连接重置
Wso2 file upload. connection reset
我开发了一个用于文件上传的 SOAP Web 服务和客户端(我想在我的数据库中写入一个 base64 二进制字符串)并且一切正常。我用 Wso2 ESB 和 Rest Client 编写了 REST api 接口,以将我的 SOAP 服务与 Wso2 提供的 JSON 到 XML 转换一起使用,并且我在大多数情况下都成功了。
当我尝试通过 REST API 接口从大于 16385 字节的文件(较小的文件工作正常)获取 base64binary 字符串时,会出现问题。
几秒钟后,连接被服务器重置(我认为是 Wso2,因为我的应用程序服务器没有收到请求)并且除了连接超时之外没有显示任何错误。
我将 Apache cxf2 用于 Web 服务和客户端生成,Tomcat 8 作为应用服务器,Wso2 ESB 与 Tomcat.
通信
这是我在 Rest Client 中的套接字异常
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at rest.RestClient.main(RestClient.java:190)
和其他 API 接口受到一些谴责:
<resource methods="POST"
protocol="https"
uri-template="/loadDoc?user={user}&pwd={pwd}">
<inSequence>
<header name="Action" value="loadDoc"/>
<payloadFactory media-type="xml">
<format>
<m0:loadDoc xmlns:m0="my service location">
<username xmlns=""></username><password xmlns=""></password>
</m0:loadDoc>
</format>
<args>
<arg evaluator="xml" expression="get-property('uri.var.user')"/>
<arg evaluator="xml" expression="get-property('uri.var.pwd')"/>
<arg evaluator="json" expression="$."/>
</args>
</payloadFactory>
<send>
<endpoint>
<address uri="my wsdl location uri"
format="soap12"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</outSequence>
WSO2 ESB 有一个默认大小的缓冲区,数据通过该缓冲区。
此默认值为 16384 字节。
转到WSO2_HOME/repository/conf/passthru-http.properties并调整io_buffer_size属性 根据需要。
我开发了一个用于文件上传的 SOAP Web 服务和客户端(我想在我的数据库中写入一个 base64 二进制字符串)并且一切正常。我用 Wso2 ESB 和 Rest Client 编写了 REST api 接口,以将我的 SOAP 服务与 Wso2 提供的 JSON 到 XML 转换一起使用,并且我在大多数情况下都成功了。 当我尝试通过 REST API 接口从大于 16385 字节的文件(较小的文件工作正常)获取 base64binary 字符串时,会出现问题。 几秒钟后,连接被服务器重置(我认为是 Wso2,因为我的应用程序服务器没有收到请求)并且除了连接超时之外没有显示任何错误。 我将 Apache cxf2 用于 Web 服务和客户端生成,Tomcat 8 作为应用服务器,Wso2 ESB 与 Tomcat.
通信这是我在 Rest Client 中的套接字异常
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:139)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:155)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:284)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at rest.RestClient.main(RestClient.java:190)
和其他 API 接口受到一些谴责:
<resource methods="POST"
protocol="https"
uri-template="/loadDoc?user={user}&pwd={pwd}">
<inSequence>
<header name="Action" value="loadDoc"/>
<payloadFactory media-type="xml">
<format>
<m0:loadDoc xmlns:m0="my service location">
<username xmlns=""></username><password xmlns=""></password>
</m0:loadDoc>
</format>
<args>
<arg evaluator="xml" expression="get-property('uri.var.user')"/>
<arg evaluator="xml" expression="get-property('uri.var.pwd')"/>
<arg evaluator="json" expression="$."/>
</args>
</payloadFactory>
<send>
<endpoint>
<address uri="my wsdl location uri"
format="soap12"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</outSequence>
WSO2 ESB 有一个默认大小的缓冲区,数据通过该缓冲区。 此默认值为 16384 字节。
转到WSO2_HOME/repository/conf/passthru-http.properties并调整io_buffer_size属性 根据需要。