我已经开发了一个自定义中介器,我想尝试将其作为REST服务发布到我的WSO2 ESB4.7.0上。创建REST API后,ESB将其发布到8280端口。在客户端,POST REST调用需要指定一些http参数,稍后需要通过以下代码在中介程序中恢复这些参数:
org.apache.axis2.context.MessageContext axis2MsgContext;
axis2MsgContext = ((Axis2MessageContext) synapseMsgContext).getAxis2MessageContext();
HttpServletRequest obj = (HttpServletRequest)axis2MsgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
if (obj != null) {
System.out.println("Method :"+ obj.getMethod());
System.out.println("Content-type :" +obj.getContentType());
System.out.println("Content-length :"+obj.getContentLength());
System.out.println("Remote addtress"+obj.getSession().getLastAccessedTime());
}我得到的对象总是空的。这可能是因为在8280ESB上使用了NHttp传输。
我可以用什么方法解决这个问题?
我必须激活HTTP Servlet传输吗?我该怎么做呢?通过在WSO2企业服务总线中安装WSO2应用服务器(我已经这样做了,但是我如何指定我希望在9763端口上公开一个服务呢?)?
HTTP和NHTTP有什么区别?ESB性能会变低吗?
发布于 2013-12-24 09:52:11
您可以配置WSO2ESB侦听多个端口。
默认情况下它使用8280,您可以更改此设置或添加另一个监听器。
<transportReceiver name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpListener">
<parameter name="port" locked="false">8280</parameter>
<parameter name="non-blocking" locked="false">true</parameter>
<!--parameter name="bind-address" locked="false">hostname or IP address</parameter-->
<!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter-->
<parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor</parameter>
<!--<parameter name="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
</transportReceiver>NHTTP或PTT用于协调消息。
致以最好的问候,马拉卡
https://stackoverflow.com/questions/20751335
复制相似问题