Added: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/TargetRequestFactory.java URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/TargetRequestFactory.java?rev=1502663&view=auto ============================================================================== --- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/TargetRequestFactory.java (added) +++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/util/TargetRequestFactory.java Fri Jul 12 19:25:40 2013 @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.synapse.transport.passthru.util; + +import org.apache.axiom.om.OMOutputFormat; +import org.apache.axis2.AxisFault; +import org.apache.axis2.Constants; +//import org.apache.axis2.util.MessageProcessorSelector; +import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.context.MessageContext; +import org.apache.axis2.transport.MessageFormatter; +import org.apache.axis2.transport.TransportUtils; +import org.apache.axis2.transport.http.HTTPConstants; +import org.apache.axis2.transport.http.SOAPMessageFormatter; +import org.apache.axis2.util.MessageProcessorSelector; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.http.HttpVersion; +import org.apache.http.protocol.HTTP; +import org.apache.synapse.transport.nhttp.NhttpConstants; +import org.apache.synapse.transport.passthru.PassThroughConstants; +import org.apache.synapse.transport.passthru.TargetRequest; +import org.apache.synapse.transport.passthru.config.TargetConfiguration; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +public class TargetRequestFactory { + + private static Log log = LogFactory.getLog(TargetRequestFactory.class); + + public static TargetRequest create(MessageContext msgContext, + TargetConfiguration configuration) throws AxisFault { + try { + String httpMethod = (String) msgContext.getProperty( + Constants.Configuration.HTTP_METHOD); + if (httpMethod == null) { + httpMethod = "POST"; + } + + // basic request + Boolean noEntityBody = (Boolean) msgContext.getProperty(PassThroughConstants.NO_ENTITY_BODY); + + if(msgContext.getEnvelope().getBody().getFirstElement() != null){ + noEntityBody =false; + } + + EndpointReference epr = PassThroughTransportUtils.getDestinationEPR(msgContext); + URL url = new URL(epr.getAddress()); + TargetRequest request = new TargetRequest(configuration, url, httpMethod, + noEntityBody == null || !noEntityBody); + + // headers + PassThroughTransportUtils.removeUnwantedHeaders(msgContext, + configuration.isPreserveServerHeader(), + configuration.isPreserveUserAgentHeader()); + + + Object o = msgContext.getProperty(MessageContext.TRANSPORT_HEADERS); + if (o != null && o instanceof Map) { + Map headers = (Map) o; + + for (Object entryObj : headers.entrySet()) { + Map.Entry entry = (Map.Entry) entryObj; + if (entry.getValue() != null && entry.getKey() instanceof String && + entry.getValue() instanceof String) { + if (!HTTPConstants.HEADER_HOST.equalsIgnoreCase((String) entry.getKey())) { + request.addHeader((String) entry.getKey(), (String) entry.getValue()); + }else { + if(msgContext.getProperty(NhttpConstants.REQUEST_HOST_HEADER) != null) { + request.addHeader((String) (String) entry.getKey(), + (String)msgContext.getProperty(NhttpConstants.REQUEST_HOST_HEADER)); + } + } + } + } + } + + String cType = getContentType(msgContext); + if (cType != null) { + request.addHeader(HTTP.CONTENT_TYPE, cType); + } + + // version + String forceHttp10 = (String) msgContext.getProperty(PassThroughConstants.FORCE_HTTP_1_0); + if ("true".equals(forceHttp10)) { + request.setVersion(HttpVersion.HTTP_1_0); + } + + // keep alive + String noKeepAlie = (String) msgContext.getProperty(PassThroughConstants.NO_KEEPALIVE); + if ("true".equals(noKeepAlie)) { + request.setKeepAlive(false); + } + + // port + int port = url.getPort(); + request.setPort(port != -1 ? port : 80); + + // chunk + String disableChunking = (String) msgContext.getProperty( + PassThroughConstants.DISABLE_CHUNKING); + if ("true".equals(disableChunking)) { + request.setChunk(false); + } + + // full url + String fullUrl = (String) msgContext.getProperty(PassThroughConstants.FULL_URI); + if ("true".equals(fullUrl)) { + request.setFullUrl(true); + } + + return request; + } catch (MalformedURLException e) { + handleException("Invalid to address" + msgContext.getTo().getAddress(), e); + } + + return null; + } + + private static String getContentType(MessageContext msgCtx) throws AxisFault { + MessageFormatter formatter = MessageProcessorSelector.getMessageFormatter(msgCtx); + OMOutputFormat format = PassThroughTransportUtils.getOMOutputFormat(msgCtx); + + if (formatter != null) { + String contentType= formatter.getContentType(msgCtx, format, msgCtx.getSoapAction()); + //keep the formatter information to prevent multipart boundary override (this will be the content writing to header) + msgCtx.setProperty(PassThroughConstants.MESSAGE_OUTPUT_FORMAT, format); + return contentType; + + } else { + String contentType = (String) msgCtx.getProperty(Constants.Configuration.CONTENT_TYPE); + if (contentType != null) { + return contentType; + } else { + return new SOAPMessageFormatter().getContentType( + msgCtx, format, msgCtx.getSoapAction()); + } + } + } + + /** + * Throws an AxisFault if an error occurs at this level + * @param s a message describing the error + * @param e original exception leads to the error condition + * @throws org.apache.axis2.AxisFault wrapping the original exception + */ + private static void handleException(String s, Exception e) throws AxisFault { + log.error(s, e); + throw new AxisFault(s, e); + } +}
Modified: synapse/trunk/java/pom.xml URL: http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=1502663&r1=1502662&r2=1502663&view=diff ============================================================================== --- synapse/trunk/java/pom.xml (original) +++ synapse/trunk/java/pom.xml Fri Jul 12 19:25:40 2013 @@ -1048,7 +1048,7 @@ <module>modules/distribution</module> <module>modules/packaging/package-skeleton</module> <module>modules/packaging/package-archetype</module> - <module>modules/integration</module> + <!--module>modules/integration</module--> <module>modules/documentation</module> </modules> Modified: synapse/trunk/java/repository/conf/axis2.xml URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/axis2.xml?rev=1502663&r1=1502662&r2=1502663&view=diff ============================================================================== --- synapse/trunk/java/repository/conf/axis2.xml (original) +++ synapse/trunk/java/repository/conf/axis2.xml Fri Jul 12 19:25:40 2013 @@ -130,13 +130,13 @@ <!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. --> <messageFormatters> <messageFormatter contentType="application/x-www-form-urlencoded" - class="org.apache.synapse.core.relay.ExpandingMessageFormatter"/> + class="org.apache.synapse.transport.passthru.util.ExpandingMessageFormatter"/> <messageFormatter contentType="multipart/form-data" - class="org.apache.synapse.core.relay.ExpandingMessageFormatter"/> + class="org.apache.synapse.transport.passthru.util.ExpandingMessageFormatter"/> <messageFormatter contentType="application/xml" - class="org.apache.synapse.core.relay.ExpandingMessageFormatter"/> + class="org.apache.synapse.transport.passthru.util.ExpandingMessageFormatter"/> <messageFormatter contentType="text/xml" - class="org.apache.synapse.core.relay.ExpandingMessageFormatter"/> + class="org.apache.synapse.transport.passthru.util.ExpandingMessageFormatter"/> <!--messageFormatter contentType="application/x-www-form-urlencoded" class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/> @@ -160,13 +160,13 @@ <!--formats in Axis2. These message formats are expected to be resolved based on the content type. --> <messageBuilders> <messageBuilder contentType="application/xml" - class="org.apache.synapse.core.relay.BinaryRelayBuilder"/> + class="org.apache.synapse.transport.passthru.util.BinaryRelayBuilder"/> <messageBuilder contentType="application/x-www-form-urlencoded" - class="org.apache.synapse.core.relay.BinaryRelayBuilder"/> + class="org.apache.synapse.transport.passthru.util.BinaryRelayBuilder"/> <messageBuilder contentType="multipart/form-data" - class="org.apache.synapse.core.relay.BinaryRelayBuilder"/> + class="org.apache.synapse.transport.passthru.util.BinaryRelayBuilder"/> <messageBuilder contentType="text/xml" - class="org.apache.synapse.core.relay.BinaryRelayBuilder"/> + class="org.apache.synapse.transport.passthru.util.BinaryRelayBuilder"/> <!--messageBuilder contentType="application/xml" class="org.apache.axis2.builder.ApplicationXMLBuilder"/> @@ -507,6 +507,7 @@ class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"> <order phase="Transport"/> </handler> + <handler name="EarlyBuilder" class="org.apache.synapse.core.relay.ServiceRequestEarlyBuilder"/> </phase> <phase name="Addressing"> <handler name="AddressingBasedDispatcher" Added: synapse/trunk/java/repository/conf/axis2_server.xml URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/axis2_server.xml?rev=1502663&view=auto ============================================================================== --- synapse/trunk/java/repository/conf/axis2_server.xml (added) +++ synapse/trunk/java/repository/conf/axis2_server.xml Fri Jul 12 19:25:40 2013 @@ -0,0 +1,573 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. + --> + +<axisconfig name="AxisJava2.0"> + <!-- ================================================= --> + <!-- Parameters --> + <!-- ================================================= --> + + <!-- WARNING: Hot deployment is turned on by default, but it is highly recommended to set this to false + on production environments, unless you really want to use hot deployment in production --> + <parameter name="hotdeployment">true</parameter> + <parameter name="hotupdate">true</parameter> + <parameter name="enableMTOM">false</parameter> + <parameter name="enableSwA">false</parameter> + + <!--Uncomment if you want to enable file caching for attachments --> + <!--parameter name="cacheAttachments">true</parameter> + <parameter name="attachmentDIR"></parameter> + <parameter name="sizeThreshold">4000</parameter--> + + <!--This will give out the timout of the configuration contexts, in milliseconds--> + <parameter name="ConfigContextTimeoutInterval">30000</parameter> + + <!--During a fault, stacktrace can be sent with the fault message. The following flag will control --> + <!--that behavior.--> + <parameter name="sendStacktraceDetailsWithFaults">false</parameter> + + <!--If there aren't any information available to find out the fault reason, we set the message of the exception--> + <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be --> + <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag--> + <!--is set, then Axis2 tries to get the first exception and set its message as the faultreason/Reason.--> + <parameter name="DrillDownToRootCauseForFaultReason">false</parameter> + + <parameter name="userName">admin</parameter> + <parameter name="password">axis2</parameter> + + <!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.--> + <!--ServicesDirectory only works on the following cases--> + <!---File based configurator and in that case the value should be a file URL (http:// not allowed)--> + <!---When creating URL Based configurator with URL "file://" --> + <!--- War based configurator with expanded case , --> + + <!--All the other scenarios it will be ignored.--> + <!--<parameter name="ServicesDirectory">service</parameter>--> + <!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path--> + <!--<parameter name="ModulesDirectory">modules</parameter>--> + + + + <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context--> + <!--root which can configured using the following contextRoot parameter--> + <parameter name="contextRoot">/</parameter> + + <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguiush those endpoints--> + <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this --> + <!--context path to proper Axis2 servlets--> + <parameter name="servicePath">services</parameter> + <parameter name="restPath">rest</parameter> + + <!-- Following parameter will completely disable REST handling in Axis2--> + <parameter name="disableREST" locked="true">false</parameter> + + <!-- Extension deployer + ***** Uncomment the following line to enable (hot) deployment of Synapse extensions (mediators and startups) ***** --> + <!--<deployer extension="xar" directory="extensions" class="org.apache.synapse.deployers.ExtensionDeployer"/>--> + + <!-- WARNING: Synapse Artifact Deployers, it is highly recommended to comment out these deployers in production + unless you really want to use hot deployment/update --> + <deployer extension="xml" directory="conf/synapse-config/sequences" class="org.apache.synapse.deployers.SequenceDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/endpoints" class="org.apache.synapse.deployers.EndpointDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/local-entries" class="org.apache.synapse.deployers.LocalEntryDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/proxy-services" class="org.apache.synapse.deployers.ProxyServiceDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/event-sources" class="org.apache.synapse.deployers.EventSourceDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/tasks" class="org.apache.synapse.deployers.TaskDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/priority-executors" class="org.apache.synapse.deployers.PriorityExecutorDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/templates" class="org.apache.synapse.deployers.TemplateDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/message-stores" class="org.apache.synapse.deployers.MessageStoreDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/message-processors" class="org.apache.synapse.deployers.MessageProcessorDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/api" class="org.apache.synapse.deployers.APIDeployer"/> + <deployer extension="xml" directory="conf/synapse-config/imports" class="org.apache.synapse.deployers.ImportDeployer"/> + <deployer extension="zip" directory="conf/synapse-libs" class="org.apache.synapse.deployers.LibraryArtifactDeployer"/> + + <!-- Following parameter will set the host name for the epr--> + <!--<parameter name="hostname" locked="true">myhost.com</parameter>--> + + <!-- If you have a frontend host which exposes this webservice using a different public URL --> + <!-- use this parameter to override autodetected url --> + <!--<parameter name="httpFrontendHostUrl">https://someotherhost/context</parameter>--> + + + <!-- The way of adding listener to the system--> + <!-- <listener class="org.apache.axis2.ObserverIMPL">--> + <!-- <parameter name="RSS_URL">http://127.0.0.1/rss</parameter>--> + <!-- </listener>--> + + <!-- ================================================= --> + <!-- Message Receivers --> + <!-- ================================================= --> + <!--This is the deafult MessageReceiver for the system , if you want to have MessageReceivers for --> + <!--all the other MEP implement it and add the correct entry to here , so that you can refer from--> + <!--any operation --> + <!--Note : You can ovrride this for a particular service by adding the same element with your requirement--> + <messageReceivers> + <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" + class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> + <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" + class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> + <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only" + class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> + <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out" + class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> + </messageReceivers> + + <!-- ================================================= --> + <!-- Message Formatter --> + <!-- ================================================= --> + <!--Following content type to message formatter mapping can be used to implement support for different message --> + <!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. --> + <messageFormatters> + <messageFormatter contentType="application/x-www-form-urlencoded" + class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/> + <messageFormatter contentType="multipart/form-data" + class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/> + <messageFormatter contentType="application/xml" + class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/> + <!--<messageFormatter contentType="x-application/hessian" + class="org.apache.synapse.format.hessian.HessianMessageFormatter"/>--> + <!--<messageFormatter contentType="" + class="org.apache.synapse.format.hessian.HessianMessageFormatter"/>--> + <!--<messageFormatter contentType="application/json" + class="org.apache.axis2.json.JSONMessageFormatter"/>--> + + </messageFormatters> + + <!-- ================================================= --> + <!-- Message Builders --> + <!-- ================================================= --> + <!--Following content type to builder mapping can be used to implement support for different message --> + <!--formats in Axis2. These message formats are expected to be resolved based on the content type. --> + <messageBuilders> + <messageBuilder contentType="application/xml" + class="org.apache.axis2.builder.ApplicationXMLBuilder"/> + <messageBuilder contentType="application/x-www-form-urlencoded" + class="org.apache.axis2.builder.XFormURLEncodedBuilder"/> + <messageBuilder contentType="multipart/form-data" + class="org.apache.axis2.builder.MultipartFormDataBuilder"/> + <!--<messageBuilder contentType="x-application/hessian" + class="org.apache.synapse.format.hessian.HessianMessageBuilder"/>--> + <!--<messageBuilder contentType="" + class="org.apache.synapse.format.hessian.HessianMessageBuilder"/>--> + <!--<messageBuilder contentType="application/json" + class="org.apache.axis2.json.JSONOMBuilder"/>--> + </messageBuilders> + + <!-- ================================================= --> + <!-- Transport Ins --> + <!-- ================================================= --> + <!-- the non blocking http transport based on HttpCore + NIO extensions --> + <transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener"> + <parameter name="port">8280</parameter> + <parameter name="non-blocking">true</parameter> + <!--parameter name="bind-address" locked="false">hostname or IP address</parameter--> + <!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter--> + <!-- paramter 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="bind-address" locked="false">hostname or IP address</parameter--> + <!--parameter name="WSDLEPRPrefix" locked="false">http://apachehost:port/somepath</parameter--> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> + <!--<parameter name="SSLVerifyClient">require</parameter> + supports optional|require or defaults to none --> + </transportReceiver> + + <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ) + <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"> + <parameter name="myTopicConnectionFactory"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter> + <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter> + </parameter> + + <parameter name="myQueueConnectionFactory"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> + <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> + </parameter> + + <parameter name="default"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> + <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> + </parameter> + </transportReceiver>--> + + <transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/> + + <transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener"> + <!-- configure any optional POP3/IMAP properties + check com.sun.mail.pop3 and com.sun.mail.imap package documentation for more details--> + </transportReceiver> + + <!--Uncomment this for FIX transport support + <transportReceiver name="fix" class="org.apache.synapse.transport.fix.FIXTransportListener"> + <parameter name="non-blocking">true</parameter> + </transportReceiver>--> + + <!--Uncomment this for TCP transport support + <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"> + <parameter name="port">6060</parameter> + </transportReceiver>--> + + <!--Uncomment this for UDP transport support + <transportReceiver name="udp" class="org.apache.axis2.transport.udp.UDPListener"/>--> + + <!-- ================================================= --> + <!-- Transport Outs --> + <!-- ================================================= --> + + <transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender"> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="warnOnHTTP500" locked="false">*</parameter> + <!--parameter name="http.proxyHost" locked="false">localhost</parameter> + <parameter name="http.proxyPort" locked="false">3128</parameter> + <parameter name="http.nonProxyHosts" locked="false">localhost|moon|sun</parameter--> + </transportSender> + <transportSender name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender"> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="warnOnHTTP500" locked="false">*</parameter> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> + <!--<parameter name="HostnameVerifier">DefaultAndLocalhost</parameter> + supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified --> + </transportSender> + + <!-- Uncomment Transport sender for the non blocking local transport--> + <!--transportSender name="local" class="org.apache.axis2.transport.local.NonBlockingLocalTransportSender"/--> + + <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"> + <!-- uncomment this and configure to use connection pools for sending messages + <parameter name="myTopicConnectionFactory"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter> + </parameter> + + <parameter name="myQueueConnectionFactory"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> + </parameter> + + <parameter name="default"> + <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> + <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter> + <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> + </parameter> --> + </transportSender> + + <transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/> + + <!-- Uncomment and configure the SMTP server information + check com.sun.mail.smtp package documentation for descriptions of properties + <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender"> + <parameter name="mail.smtp.host">smtp.gmail.com</parameter> + <parameter name="mail.smtp.port">587</parameter> + <parameter name="mail.smtp.starttls.enable">true</parameter> + <parameter name="mail.smtp.auth">true</parameter> + <parameter name="mail.smtp.user">synapse.demo.0</parameter> + <parameter name="mail.smtp.password">mailpassword</parameter> + <parameter name="mail.smtp.from">[email protected]</parameter> + </transportSender>--> + + <!--Uncomment this for FIX transport support + <transportSender name="fix" class="org.apache.synapse.transport.fix.FIXTransportSender"> + <parameter name="non-blocking">true</parameter> + </transportSender>--> + + <!--Uncomment this for TCP transport support + <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>--> + + <!--Uncomment this for UDP transport support + <transportSender name="udp" class="org.apache.axis2.transport.udp.UDPSender"/>--> + + <!-- ================================================= --> + <!-- Global Modules --> + <!-- ================================================= --> + <!-- Comment this to disable Addressing --> + <module ref="addressing"/> + + <!--Configuring module , providing parameters for modules whether they refer or not--> + <!--<moduleConfig name="addressing">--> + <!--<parameter name="addressingPara">N/A</parameter>--> + <!--</moduleConfig>--> + + <!-- ================================================= --> + <!-- Clustering --> + <!-- ================================================= --> + <!-- Configure the following for preparing Synapse to a clustered environment --> + <clustering class="org.apache.axis2.clustering.tribes.TribesClusteringAgent" enable="false"> + + <!-- + This parameter indicates whther the cluster has to be automatically initalized + when the AxisConfiguration is built. If set to "true" the initialization will not be + done at that stage, and some other party will have to explictly initialize the cluster. + --> + <parameter name="AvoidInitiation">false</parameter> + + <!-- + The membership scheme used in this setup. The only values supported at the moment are + "multicast" and "wka" + + 1. multicast - membership is automatically discovered using multicasting + 2. wka - Well-Known Address based multicasting. Membership is discovered with the help + of one or more nodes running at a Well-Known Address. New members joining a + cluster will first connect to a well-known node, register with the well-known node + and get the membership list from it. When new members join, one of the well-known + nodes will notify the others in the group. When a member leaves the cluster or + is deemed to have left the cluster, it will be detected by the Group Membership + Service (GMS) using a TCP ping mechanism. + --> + <parameter name="membershipScheme">multicast</parameter> + + <!-- + The clustering domain/group. Nodes in the same group will belong to the same multicast + domain. There will not be interference between nodes in different groups. + --> + <parameter name="domain">apache.synapse.domain</parameter> + + <!-- + When a Web service request is received, and processed, before the response is sent to the + client, should we update the states of all members in the cluster? If the value of + this parameter is set to "true", the response to the client will be sent only after + all the members have been updated. Obviously, this can be time consuming. In some cases, + such this overhead may not be acceptable, in which case the value of this parameter + should be set to "false" + --> + <parameter name="synchronizeAll">true</parameter> + + <!-- + The maximum number of times we need to retry to send a message to a particular node + before giving up and considering that node to be faulty + --> + <parameter name="maxRetries">10</parameter> + + <!-- The multicast address to be used --> + <parameter name="mcastAddress">228.0.0.4</parameter> + + <!-- The multicast port to be used --> + <parameter name="mcastPort">45564</parameter> + + <!-- The frequency of sending membership multicast messages (in ms) --> + <parameter name="mcastFrequency">500</parameter> + + <!-- The time interval within which if a member does not respond, the member will be + deemed to have left the group (in ms) + --> + <parameter name="memberDropTime">3000</parameter> + + <!-- + The IP address of the network interface to which the multicasting has to be bound to. + Multicasting would be done using this interface. + --> + <parameter name="mcastBindAddress">127.0.0.1</parameter> + + <!-- The host name or IP address of this member --> + <parameter name="localMemberHost">127.0.0.1</parameter> + + <!-- + The TCP port used by this member. This is the port through which other nodes will + contact this member + --> + <parameter name="localMemberPort">4000</parameter> + + <!-- + The list of static or well-known members. These entries will only be valid if the + "membershipScheme" above is set to "wka" + --> + <members> + <member> + <hostName>127.0.0.1</hostName> + <port>4000</port> + </member> + <member> + <hostName>127.0.0.1</hostName> + <port>4001</port> + </member> + </members> + + <!-- + Enable the groupManagement entry if you need to run this node as a cluster manager. + Multiple application domains with different GroupManagementAgent implementations + can be defined in this section. + --> + <groupManagement enable="false"> + <applicationDomain name="apache.axis2.app.domain" + description="Axis2 group" + agent="org.apache.axis2.clustering.management.DefaultGroupManagementAgent"/> + </groupManagement> + + <!-- + This interface is responsible for handling context replication. The property changes in + the Axis2 context hierarchy in this node, are propagated to all other nodes in the cluster. + + The "excludes" patterns can be used to specify the prefixes (e.g. local_*) or + suffixes (e.g. *_local) of the properties to be excluded from replication. The pattern + "*" indicates that all properties in a particular context should not be replicated. + + The "enable" attribute indicates whether context replication has been enabled + --> + <contextManager class="org.apache.axis2.clustering.context.DefaultContextManager" + enable="false"> + <listener class="org.apache.axis2.clustering.context.DefaultContextManagerListener"/> + <replication> + <defaults> + <exclude name="local_*"/> + <exclude name="LOCAL_*"/> + </defaults> + <context class="org.apache.axis2.context.ConfigurationContext"> + <exclude name="UseAsyncOperations"/> + <exclude name="SequencePropertyBeanMap"/> + </context> + <context class="org.apache.axis2.context.ServiceGroupContext"> + <exclude name="my.sandesha.*"/> + </context> + <context class="org.apache.axis2.context.ServiceContext"> + <exclude name="my.sandesha.*"/> + </context> + </replication> + </contextManager> + </clustering> + + <!-- ================================================= --> + <!-- Phases --> + <!-- ================================================= --> + <phaseOrder type="InFlow"> + <!-- System pre defined phases --> + <phase name="Transport"> + <handler name="RequestURIBasedDispatcher" + class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"> + <order phase="Transport"/> + </handler> + <handler name="SOAPActionBasedDispatcher" + class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"> + <order phase="Transport"/> + </handler> + </phase> + <phase name="Addressing"> + <handler name="AddressingBasedDispatcher" + class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> + <order phase="Addressing"/> + </handler> + </phase> + <phase name="Security"/> + <phase name="PreDispatch"/> + <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> + <handler name="CustomURIBasedDispatcher" + class="org.apache.synapse.core.axis2.CustomURIBasedDispatcher"/> + <handler name="RequestURIBasedDispatcher" + class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/> + <handler name="SOAPActionBasedDispatcher" + class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> + <handler name="RequestURIOperationDispatcher" + class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> + <handler name="SOAPMessageBodyBasedDispatcher" + class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> + + <handler name="HTTPLocationBasedDispatcher" + class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> + </phase> + <phase name="RMPhase"/> + <!-- System predefined phases --> + <!-- After Postdispatch phase module author or service author can add any phase he want --> + <phase name="OperationInPhase"/> + <phase name="soapmonitorPhase"/> + </phaseOrder> + <phaseOrder type="OutFlow"> + <!-- user can add his own phases to this area --> + <phase name="soapmonitorPhase"/> + <phase name="OperationOutPhase"/> + <!--system predefined phase--> + <!--these phase will run irrespective of the service--> + <phase name="RMPhase"/> + <phase name="PolicyDetermination"/> + <phase name="MessageOut"/> + <phase name="Security"/> + </phaseOrder> + <phaseOrder type="InFaultFlow"> + <phase name="Addressing"> + <handler name="AddressingBasedDispatcher" + class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> + <order phase="Addressing"/> + </handler> + </phase> + <phase name="Security"/> + <phase name="PreDispatch"/> + <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> + <handler name="RequestURIBasedDispatcher" + class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/> + <handler name="SOAPActionBasedDispatcher" + class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/> + <handler name="RequestURIOperationDispatcher" + class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/> + <handler name="SOAPMessageBodyBasedDispatcher" + class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/> + + <handler name="HTTPLocationBasedDispatcher" + class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/> + </phase> + <phase name="RMPhase"/> + <!-- user can add his own phases to this area --> + <phase name="OperationInFaultPhase"/> + <phase name="soapmonitorPhase"/> + </phaseOrder> + <phaseOrder type="OutFaultFlow"> + <!-- user can add his own phases to this area --> + <phase name="soapmonitorPhase"/> + <phase name="OperationOutFaultPhase"/> + <phase name="RMPhase"/> + <phase name="PolicyDetermination"/> + <phase name="MessageOut"/> + <phase name="Security"/> + </phaseOrder> +</axisconfig> \ No newline at end of file
