2
votes

I am working on WSO2 ESB 4.0.3 on Mac 10.7.4.

I am trying to set up 2 HTTP transport listners in axis2.xml as follows

<transportReceiver name="http-default" class="org.wso2.carbon.core.transports.http.HttpTransportListener">
    <!--
       Uncomment the following if you are deploying this within an application server. You
       need to specify the HTTP port of the application server
    -->
    <parameter name="port">8580</parameter>

    <!--
   Uncomment the following to enable Apache2 mod_proxy. The port on the Apache server is 80
   in this case.
    -->
    <!--<parameter name="proxyPort">80</parameter>-->
</transportReceiver>

<transportReceiver name="http-default" class="org.wso2.carbon.core.transports.http.HttpsTransportListener">
    <!--
       Uncomment the following if you are deploying this within an application server. You
       need to specify the HTTPS port of the application server
    -->
    <parameter name="port">8543</parameter>

    <!--
   Uncomment the following to enable Apache2 mod_proxy. The port on the Apache server is 443
   in this case.
    -->
    <!--<parameter name="proxyPort">443</parameter>-->
</transportReceiver>
<transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener">
    <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.NHttpGetProcessor</parameter>
    <!--<parameter name="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
</transportReceiver>

<!-- the non blocking https transport based on HttpCore + SSL-NIO extensions -->
<transportReceiver name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener">
    <parameter name="port" locked="false">8243</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="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
    <parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.NHttpGetProcessor</parameter>
    <parameter name="keystore" locked="false">
        <KeyStore>
            <Location>repository/resources/security/wso2carbon.jks</Location>
            <Type>JKS</Type>
            <Password>wso2carbon</Password>
            <KeyPassword>wso2carbon</KeyPassword>
        </KeyStore>
    </parameter>
    <parameter name="truststore" locked="false">
        <TrustStore>
            <Location>repository/resources/security/client-truststore.jks</Location>
            <Type>JKS</Type>
            <Password>wso2carbon</Password>
        </TrustStore>
    </parameter>
    <!--<parameter name="SSLVerifyClient">require</parameter>
        supports optional|require or defaults to none -->
</transportReceiver>

I have configured correspoding senders as well.

Question is, is it possible to define 2 HTTP transport receivers in axis2.xml?

When I try to start the ESB it does not allow me define 2 HTTP transport receivers. I want to use NIO transport receiver for some services and default HTTP transport receiver for other services. This is because some services deployed in WSO2 ESB do the authentication with Directory Services using cookies set by some other process. Cookies are in HTTPServletRequest object and it is only available if I DO NOT use NIO transport and use the default HTTP transport receivers.

Please help. thanks Abhijit

1

1 Answers

1
votes

you should be able to define two transport receivers in ESB you need to give different names for transport (eg. http1, http2). For an example for all proxy services you should be able to use the available 9763 http port.

However there is a problem with defining two transport senders. you can define two transport senders like http1 and http2. But the problem comes when giving the http location. for an example we axis2 infer the transport with the url. So when we say http:// then it takes the sender as http. since this protocol names are well defined then it can not pick transport senders when you use non standard name.