【问题标题】:Enabling TCP Transport for WSO2 ESB为 WSO2 ESB 启用 TCP 传输
【发布时间】:2013-03-27 11:06:16
【问题描述】:

我正在试验 WSO2 ESB 支持的不同传输方式。我想为 WSO2 ESB 启用 TCP 传输。我已经下载了axis2-transport-tcp-1.0.0.jar 并将其放入ESB_HOME/repository/components/lib。我设法通过添加

来启用 Transport Sender
<transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>

axis2.xml 配置文件。为了启用传输接收器,我添加了类似的行

<transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"/>

但是,当我重新启动 WSO2 ESB 时,无法初始化传输接收器。相反,我得到一个InstantiationError

org.apache.axis2.AxisFault: Exception occured while loading the Axis configuration from /usr/local/wso2esb/repository/conf/axis2/axis2.xml
    at org.wso2.carbon.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:190)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
    at org.wso2.carbon.core.CarbonConfigurationContextFactory.createNewConfigurationContext(CarbonConfigurationContextFactory.java:65)
    at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:398)
    at org.wso2.carbon.core.init.CarbonServerManager.removePendingItem(CarbonServerManager.java:290)
    at org.wso2.carbon.core.init.PreAxis2ConfigItemListener.bundleChanged(PreAxis2ConfigItemListener.java:118)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:847)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Caused by: org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.tcp.TCPServer
    at org.apache.axis2.deployment.AxisConfigBuilder.processTransportReceivers(AxisConfigBuilder.java:643)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:130)
    at org.wso2.carbon.core.CarbonAxisConfigurator.populateAxisConfiguration(CarbonAxisConfigurator.java:308)
    at org.wso2.carbon.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:188)
... 8 more
Caused by: java.lang.InstantiationException: org.apache.axis2.transport.tcp.TCPServer
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.axis2.deployment.AxisConfigBuilder.processTransportReceivers(AxisConfigBuilder.java:627)
    ... 11 more

我尝试在axis2.xml 中提供端口号参数,但没有任何改变。

我试图追踪错误。由于没有无参数构造函数,似乎无法实例化类对象。但是我使用相同的 jar 文件运行了以下示例,没有任何错误:

String className = "org.apache.axis2.transport.tcp.TCPServer";
Class receiverClass;

receiverClass = Loader.loadClass(className);

TransportListener receiver = (TransportListener) receiverClass.newInstance();

我猜这是一个集成问题,但我想不出任何解决方案。

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    要启用 TCP 传输,您不必添加“axis2-transport-tcp-1.0.0.jar”,它的必需库随 WSO2 ESB 一起提供。

    您所要做的就是转到

    中提供的axis2.xml
    ESB_HOME/repository/conf/axis2/axis2.xml
    

    并为 Transport sender 和 Transport Reciver 添加以下块 在这里你可以通过添加

    来添加 tcp 端口
    <parameter name="transport.tcp.port">6060</parameter>
    

    如下图。 对于传输接收器

    <!-- Enable TCP message -->  
    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportListener">
        <parameter name="transport.tcp.port">6060</parameter>
    </transportReceiver>
    

    添加传输发送者

    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
    

    谢谢你, 达沙那。

    【讨论】:

    • 我认为我使用的是 org.apache.axis2.transport.tcp.TCPServer 而不是 org.apache.axis2.transport.tcp.TCPTransportListener。官方文档没有在 XML 声明中指定任何类,而是指定 org.apache.axis2.transport.tcp.TCPServer 是实现类。这就是误导我的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2013-11-29
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多