Migrating from WSO2 ESB 5.0 to WSO2 EI 7.1¶
This guide provides the recommended strategy for migrating from WSO2 ESB 5.0 to the Micro Integrator of WSO2 EI 7.1.
Why migrate to EI 7.1?¶
Listed below are some of the advantages of moving to EI 7.1 from the ESB.
-
The Micro Integrator of EI 7.1 is now the most improved version of the battle-tested WSO2 ESB runtime.
Tip
WSO2 ESB 5.0, the ESB profile of WSO2 EI 6.x, as well as the Micro Integrator of WSO2 EI 7.x contains versions of the same WSO2 ESB runtine.
-
All the ESB runtimes of WSO2 can use the same developer tool (WSO2 Integration Studio) for developing integrations.
-
All the integration capabilities that you used in the ESB can be used in the Micro Integrator with minimal changes.
-
The Micro Integrator contains improvements to ease your product experience.
Note
The most significant change in EI 7.1 is the Toml-based configuration strategy, which replaces the XML configurations in previous versions of the ESB runtime. Some of the features are removed from WSO2 Micro Integrator as they are not frequently used.
Migration from WSO2 ESB is recommended for the following requirements:
- You need to switch to a microservices architecture from the conventional centralized architecture.
- You need a more lightweight, user-friendly version of the battle-tested WSO2 ESB.
- You need a more lightweight, container-friendly runtime in a centralized architecture.
- You need native support for Kubernetes.
Before you begin¶
Note the following:
- Ports are different in the Micro Integrator of EI 7.1.0. Find out about ports in the Micro Integrator.
-
The Micro Integrator of EI 7.1 contains changes that will impact your migration process. Be sure to read the following resources before you start.
-
Note that EI 7.x is a WUM-only release, which means that manual patches are not allowed. You can use WSO2 Update Manager(WUM) to get the latest fixes or updates for this release..
-
If you are migrating from a version older than WSO2 ESB 5.0.0, you should first migrate to ESB 5.0.0 and then migrate to the Micro Integrator of EI 7.1.0.
- The distribution folder structure has changed from ESB 5.0.0 to EI 7.1:
WSO2 ESB 5.0.0 Micro Integrator of EI 7.1.0 /repository/conf /conf /repository/components/dropins /dropins /repository/components/extensions /extensions /repository/components/lib /lib /repository/components/plugins /wso2/components/plugins
Migrating to the Micro Integrator¶
Follow the instructions below to start the migration!
Set up the migration¶
- Make a backup of the ESB 5.0 distribution (
<ESB_5.0.0_HOME>
folder) to back up the product configurations. - Make a backup of the database used by the current ESB 5.0 deployment. This backup is necessary in case the migration causes any issues in the existing database.
-
Download and install EI 7.1 in your environment:
Tip
The home directory of your Micro Integrator will be referred to as
<MI_HOME>
from hereon.- Install the product using the Installer.
- Install the product using the binary distribution.
-
Use WSO2 Update Manager to get the latest available updates for your EI 7.1 distribution.
Info
Note that you need a valid WSO2 subscription to use updates in a production environment.
Migrating the user store¶
If you are already using a JDBC or LDAP as the primary user store of your ESB 5.0, you can simply connect the same to the Micro Integrator.
Note that secondary user stores are currently not supported in the Micro Integrator of EI 7.1.0.
Before you begin
Read about users and roles in the Micro Integrator and about how they function. Note the following important facts:
- Users in the Micro Intgrator are categorized as admin users and non-admin users.
- All admin users in your existing ESB user store will function as admin users in the Micro integrator.
- Tenant admins are no longer valid because the Micro Integrator does not support multitenancy.
To connect the Micro Integrator to the primary user store:
- Open the
deployment.toml
file of your Micro Integrator. -
Note that you have the
[user_store]
section enabled by default.[user_store] type = "read_only_ldap"
-
Update the
[user_store]
section and other configurations as given below.[user_store] type = "database" read_only = "false" [[datasource]] id = "WSO2_USER_DB" url= "jdbc:mysql://localhost:3306/userdb" username="root" password="root" driver="com.mysql.jdbc.Driver" [realm_manager] data_source = "WSO2_USER_DB" [internal_apis.file_user_store] enable = false
[user_store] connection_url = "ldap://localhost:10389" connection_name = "uid=admin,ou=system" connection_password = "admin" user_search_base = "ou=Users,dc=wso2,dc=org" type = "read_only_ldap" [internal_apis.file_user_store] enable = false
[user_store] connection_url = "ldap://localhost:10389" connection_name = "uid=admin,ou=system" connection_password = "admin" user_search_base = "ou=Users,dc=wso2,dc=org" type = "read_write_ldap" [internal_apis.file_user_store] enable = false
-
If your user store is an RDBMS, be sure to add the client JAR of your RDBMS to the
<MI_HOME>/lib
folder.
See the instructions on configuring a user store for more information.
Migrating the registry¶
Before you begin
Note the following:
- Your ESB 5.0 registry may have the following partitions: Local, Config, and Gov. However, you only need to migrate the Config and Gov registry partitions. See the instructions on configuring registry partitions in the Micro Integrator.
- Message processor tasks stored in the registry should be stored with a new naming convention in the Micro Integrator. Therefore, all entries in the registry with the
MSMP
prefix (which correspond to message processor tasks) should not be migrated to the Micro Integrator. New entries will be automatically created when you start the Micro Integrator server. - If you have shared the registry of ESB 5.0 among multiple nodes, you can do the same for the file-based registry of EI 7.1. However, note that registry mounting/sharing is only required for persisting message processor states among nodes of EI 7.1.
The Micro Integrator uses a file-based registry instead of a database (which is used in ESB 5.0). Follow the guidelines given below when you migrate the registry artifacts.
- If the registry resources in ESB 5.0 are added via carbon applications developed using WSO2 Integration Studio, you can directly migrate the artifacts to the Micro Integrator of EI 7.1. Copy the carbon applications from the
<ESB_5.0.0_HOME>/repository/deployment/server/carbonapps
folder to the<MI_HOME>/repository/deployment/server/carbonapps
folder. -
If the registry resources are added through the management console in ESB 5.0, you need to convert them to a Registry Resources module in WSO2 Integration Studio and deploy them via a Carbon Application.
Known Issues
A registry migration using this method is currently not possible due to the known issues listed below. Please contact WSO2 if you require a registry migration.
Use one of the following approaches:
- Checkout the Registry Resources from the ESB 5.0 server directly into the Registry Resources module in WSO2 Integration Studio.
- Download the Registry Resources from ESB 5.0 and import them into the Registry Resources module in WSO2 Integration Studio.
Note
Once you have imported the Registry Resources into WSO2 Integration Studio, open the resource editor and make sure that the media type of the resource is set properly.
-
If you have encrypted data in the ESB 5.0 registry, follow the instructions in migrating passwords.
Migrating integration artifacts¶
Before you begin
Note that the following changes are effective in the Micro Integrator of EI 7.1 when you migrate from WSO2 ESB 5.0.0 to the Micro Integrator.
Removed mediators
The following mediators and artifacts are removed in the ESB/Micro Integrator runtime after ESB 5.0.0.
- Priority Executors
- Enqueue Mediator
- Bean Mediator
- POJO Command Mediator
- Spring Mediator
- Conditional Router Mediator
- In, Out Mediators
- Event Mediator
- In memory Topics
- Router Mediator
- Publish Event Mediator
Message mediation
- If you have used the
$ctx
function inline (in the Payload Factory mediator) to get property values, you need to change this to the full XPath. The$ctx
function or theget-property()
function can be used inside the argument (args) tags to get property values. - The XSLT mediator writes response messages to the JSON stream. In ESB versions prior to EI 6.4.0, the XSLT mediator was not doing any changes to the JSON stream after message transformation.
- There are validations affecting the Enrich mediator, which prevents the source and target in the message body.
- If you have specified an XPath value in your mediation sequence, the response message generated by the ESB will include the element tags of your XPath value. For example, if your XPath value is "//faultdescription", the response message will be
<faultdescription>DESCRIPTION</faultdescription>
. If you want the response message to contain only the DESCRIPTION, you need to specify the XPath value as "//faultdescription/text()". - If you are using the MailTo transport to send emails through a mediation sequence, note that the email sender specified in the mediation sequence overrides the email sender configured in the Micro Integrator configurations.
HTTP content negotiation
HTTP content negotiation is enabled in the Micro Integrator by default. This setting transforms the message (at the time of building the message) according to the content type specified using the 'Accept' header of the request message. You can disable this behavior by updating the deployment.toml
file as shown below.
[server]
hostname = "localhost"
http_content_negotiation = true
The recommended way to create integration artifacts (in ESB 5.0 or EI 7.x ) is to use WSO2 Integration Studio:
-
If the artifacts are created in the recommended way, copy the CAR files inside
<ESB_5.0.0_HOME>/repository/deployment/server/carbonapps
to the<MI_HOME>/repository/deployment/server/carbonapps
folder.Changed package names
Note that some of the class names of packages used inside your integration artifacts have changed in the Micro Integrator.
For example, if you have used a Token Store when applying security policy to a proxy service in the ESB, the token store class has changed from
org.wso2.carbon.security.util.SecurityTokenStore
toorg.wso2.micro.integrator.security.extensions.SecurityTokenStore
in the Micro Integrator.Therefore, these artifacts have to be updated with the correct class name and packaged into a new CAR file before migration.
-
If you have a custom mediator packed in a CAR, do one of the following:
- Include all the artifacts (using that mediator) in the same CAR.
- Alternatively, you can add the JAR of the mediator to the
<MI_HOME>/lib/dropins
folder so that it can be shared by artifacts in multiple CARs.
- If the artifacts are created using the management console of ESB 5.0, you need to recreate them using WSO2 Integration Studio and package them as a composite application. See the instructions on packaging artifacts.
Tip
For testing purposes, you can copy the artifacts to the same folder structure inside the <MI_HOME>/repository/deployment/server/synapse-configs/default
directory.
Migrating deployed Connectors¶
- If the connector is added to ESB 5.0 via a composite application with the Connector Exporter Project, the same can be used in EI 7.1 seamlessly. Simply copy the CAR file in ESB 5.0 to the
<MI_HOME>/repository/deployment/server/carbonapps
folder. - If the connector is added to ESB 5.0 via the management console, pack them using the Connector Exporter Project and deploy via a composite application in EI 7.1.
Migrating custom components¶
Copy custom OSGI components in the <ESB_5.0.0_HOME>/repository/components/dropins
folder to the <MI_HOME>/dropins
folder. If you have custom JARs in the <ESB_5.0.0_HOME>/repository/components/lib
folder, copy those components to the <MI_HOME>/lib
directory.
Note
- To provide seamless integration with RabbitMQ, the Rabbitmq client lib is included in the Micro Integrator by default. Hence, you don't need to manually add any RabbitMQ components.
- WSO2 EI no longer packs the VFS/SMB provider by default. If you need to use the VFS SMB feature, download
jcifs-1.3.17.jar
and add it to the<MI_HOME/lib
folder. Since this library is licensed under LGPL version 2.1, you have to comply with the terms of LGPL version 2.1 and its restrictions. - If you used an HL7 Message Store (custom message store) implementation, note that the Micro Integrator does not support this functionality. See the list of removed features for details.
Migrating tenants¶
Multitenancy within one JVM is not supported in the Micro Integrator of EI 7.1. Therefore, if you used multiple tenants in your ESB deployment, you can replicate the set up in EI 7.1 by using separate Micro Integrator nodes.
Migrating keystores¶
Copy the JKS files from the <ESB_5.0.0_HOME>/repository/resources/security
folder to the <MI_HOME>/repository/resources/security
folder.
Migrating configurations¶
Before you begin
Note the following:
- Configuration management was handled in WSO2 ESB 5.0 versions via multiple files such as
carbon.xml
,synapse.properties
,axis2.xml
, etc. - Micro Integrator of EI 7.1 provides a new configuration model where most of the product configurations are managed by a single configuration file named
deployment.toml
(stored in the<MI_HOME>/conf
directory). - Log configurations are managed with log4j2 (whereas the ESB 5.0 used log4j), which are configured in the
log4j2.properties
file.
The following sections of this document will guide you to migrate the product configurations including log4j.
Migrating to TOML configurations¶
Tip
If you have a WSO2 subscription, it is highly recommended to reach WSO2 Support before attempting to proceed with the configuration migration.
Given below are main configurations that have changed in the Micro integrator. Expand the sections to find the TOML configurations corresponding to the XML configurations.
Clustering configurations
In the Micro Integrator, you don't need to enable clustering as you did with previous ESB versions. Instead, you need to configure all nodes in the cluster to coordinate through an RDBMS. Find out more about cluster coordination.
<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent"
enable="true">
<parameter name="clusteringPattern">nonWorkerManager</parameter>
</clustering>
# Cluster coordination database connection.
[[datasource]]
id = "WSO2_COORDINATION_DB"
url= "jdbc:mysql://localhost:3306/clusterdb"
username="root"
password="root"
driver="com.mysql.jdbc.Driver"
# Identifying nodes in the cluster.
[cluster_config]
node_id = "node-1"
Find more parameters.
Analytics configurations
If you used EI Analytics with your ESB, you have configured the following to be able to publish statistics to the Analytics server.
<ESB_HOME>/repository/deployment/server/eventpublishers/MessageFlowConfigurationPublisher.xml
<ESB_HOME>/repository/deployment/server/eventpublishers/MessageFlowStatisticsPublisher.xml
If you using EI Analytics with your new Micro Integrator solution, you can follow the instructions in Setting up the EI Analytics Profile for Observability.
Given below are some of the most critical XML configuraton files in ESB 5.0. Expand each section to find the TOML configurations corresponding to the XML configurations in the file.
carbon.xml
-
Hostname
<HostName>www.wso2.org</HostName>
[server] hostname = "www.wso2.org"
Find more parameters.
-
Port offset
<Ports> <Offset>1</Offset> </Ports>
[server] offset = 0
Find more parameters.
-
Primary keystore
<Security> <KeyStore> <Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location> <Type>JKS</Type> <Password>wso2carbon</Password> <KeyAlias>wso2carbon</KeyAlias> <KeyPassword>wso2carbon</KeyPassword> </KeyStore> </Security>
[keystore.primary] file_name = "wso2carbon.jks" type = "JKS" password = "wso2carbon" alias = "wso2carbon" key_password = "wso2carbon"
Find more parameters.
-
Internal keystore
<InternalKeyStore> <Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location> <Type>JKS</Type> <Password>wso2carbon</Password> <KeyAlias>wso2carbon</KeyAlias> <KeyPassword>wso2carbon</KeyPassword> </InternalKeyStore>
[keystore.internal] file_name = "wso2carbon.jks" type = "JKS" password = "wso2carbon" alias = "wso2carbon" key_password = "wso2carbon"
Find more parameters.
-
Truststore
<TrustStore> <Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location> <Type>JKS</Type> <Password>wso2carbon</Password> </TrustStore>
[truststore] file_name = "client-truststore.jks" type = "JKS" password = "wso2carbon" alias = "symmetric.key.value" algorithm = "AES"
Find more parameters.
user-mgt.xml
-
Admin user
<Realm> <Configuration> <AdminRole>admin</AdminRole> <AdminUser> <UserName>admin</UserName> <Password>admin</Password> </AdminUser> </Configuration> </Realm>
[super_admin] username = "admin" # inferred password = "admin" # inferred admin_role = "admin" # inferred
-
User datasource
<Realm> <Configuration> <Property name="isCascadeDeleteEnabled">true</Property> <Property name="dataSource">jdbc/WSO2CarbonDB</Property> </Configuration> </Realm>
[realm_manager] data_source = "WSO2CarbonDB" properties.isCascadeDeleteEnabled = true
-
LDAP userstore
<UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager"> <Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property> <Property name="ConnectionURL">ldap://localhost:10389</Property> <Property name="ConnectionName">uid=admin,ou=system</Property> </UserStoreManager>
[internal_apis.file_user_store] enable = false [user_store] type = "read_only_ldap" # inferred default read_only_ldap # OR read_write_ldap class = "org.wso2.micro.integrator.security.user.core.ldap.ReadOnlyLDAPUserStoreManager" # inferred connection_url = "ldap://localhost:10389" #inferred connection_name = "uid=admin,ou=system" #inferred
Find more parameters.
-
JDBC userstore
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager"> <Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property> </UserStoreManager>
[internal_apis.file_user_store] enable = false [user_store] class = "org.wso2.micro.integrator.security.user.core.jdbc.JDBCUserStoreManager" type = "database"
master-datasource.xml
Carbon database (WSO2_CARBON_DB
).
<datasource>
<name>WSO2_CARBON_DB</name>
<description>The datasource used for registry and user manager</description>
<jndiConfig>
<name>jdbc/WSO2CarbonDB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:h2:./repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
</configuration>
</definition>
</datasource>
[[datasource]]
id = "WSO2_CARBON_DB"
url= "jdbc:h2:./repository/database/WSO2CARBON_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000"
username="username"
password="password"
driver="org.h2.Driver"
pool_options.maxActive=50
pool_options.maxWait = 60000 # wait in milliseconds
pool_options.testOnBorrow = true
Find more parameters.
axis2.xml
-
Hot deployment
<parameter name="hotdeployment" locked="false">true</parameter>
[server] hot_deployment = true
-
Enable MTOM
<parameter name="enableMTOM" locked="false">false</parameter>
[server] enable_mtom = false
Find more parameters.
-
Enable SWA
<parameter name="enableSwA" locked="false">false</parameter>
[server] enable_swa = false
Find more parameters.
-
Message formatters
<messageFormatters> <messageFormatter contentType="application/x-www-form-urlencoded" class="org.apache.synapse.commons.formatters.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="text/xml" class="org.apache.axis2.transport.http.SOAPMessageFormatter"/> <messageFormatter contentType="application/soap+xml" class="org.apache.axis2.transport.http.SOAPMessageFormatter"/> <messageFormatter contentType="text/plain" class="org.apache.axis2.format.PlainTextFormatter"/> <messageFormatter contentType="application/octet-stream" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/> <messageFormatter contentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamFormatter"/> </messageFormatters>
[message_formatters] form_urlencoded = "org.apache.synapse.commons.formatters.XFormURLEncodedFormatter" multipart_form_data = "org.apache.axis2.transport.http.MultipartFormDataFormatter" application_xml = "org.apache.axis2.transport.http.ApplicationXMLFormatter" text_xml = "org.apache.axis2.transport.http.SOAPMessageFormatter" soap_xml = "org.apache.axis2.transport.http.SOAPMessageFormatter" text_plain = "org.apache.axis2.format.PlainTextFormatter" application_json = "org.wso2.micro.integrator.core.json.JsonStreamFormatter" octet_stream = "org.wso2.carbon.relay.ExpandingMessageFormatter" # Custom message formatters. [[custom_message_formatters]] content_type = "application/json/badgerfish" class = "org.apache.axis2.json.JSONBadgerfishMessageFormatter"
Find more parameters.
-
Message builders
<messageBuilders> <messageBuilder contentType="application/xml" class="org.apache.axis2.builder.ApplicationXMLBuilder"/> <messageBuilder contentType="application/x-www-form-urlencoded" class="org.apache.synapse.commons.builders.XFormURLEncodedBuilder"/> <messageBuilder contentType="multipart/form-data" class="org.apache.axis2.builder.MultipartFormDataBuilder"/> <messageBuilder contentType="text/plain" class="org.apache.axis2.format.PlainTextBuilder"/> <messageBuilder contentType="application/octet-stream" class="org.wso2.carbon.relay.BinaryRelayBuilder"/> <messageBuilder contentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamBuilder"/> </messageBuilders>
[message_builders] application_xml = "org.apache.axis2.builder.ApplicationXMLBuilder" form_urlencoded = "org.apache.synapse.commons.builders.XFormURLEncodedBuilder" multipart_form_data = "org.apache.axis2.builder.MultipartFormDataBuilder" text_plain = "org.apache.axis2.format.PlainTextBuilder" application_json = "org.wso2.micro.integrator.core.json.JsonStreamBuilder" octet_stream = "org.wso2.carbon.relay.BinaryRelayBuilder" # Custom message builders [[custom_message_builders]] content_type = "application/json/badgerfish" class = "org.apache.axis2.json.JSONBadgerfishOMBuilder"
Find more parameters.
-
HTTP transport receiver
<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> </transportReceiver>
[transport.http] listener.enable = true listener.port = 8280 listener.wsdl_epr_prefix ="https://apachehost:port/somepath" listener.bind_address = "hostname or IP address"
Find more parameters.
-
HTTPS transport receiver
<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener"> <parameter name="port" locked="false">8243</parameter> <parameter name="non-blocking" locked="false">true</parameter> <parameter name="HttpsProtocols">TLSv1,TLSv1.1,TLSv1.2</parameter> <parameter name="bind-address" locked="false">hostname or IP address</parameter> <parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</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> </transportReceiver>
[transport.http] listener.secured_enable = true listener.secured_port = 8243 listener.secured_wsdl_epr_prefix = "https://apachehost:port/somepath" listener.secured_bind_address = "hostname or IP address" listener.secured_protocols = "TLSv1,TLSv1.1,TLSv1.2" listener.keystore.location ="repository/resources/security/wso2carbon.jks" listener.keystore.type = "JKS" listener.keystore.password = "wso2carbon" listener.keystore.key_password = "wso2carbon" listener.truststore.location = "repository/resources/security/client-truststore.jks" listener.truststore.type = "JKS" listener.truststore.password = "wso2carbon"
Find more parameters.
-
VFS transport receiver
<transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/>
[transport.vfs] listener.enable = true
Find more parameters.
-
Mailto transport receiver
<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener"/> ```
[transport.mail.listener] enable = true name = "mailto"
Find more parameters.
-
JMS transport receiver
<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"> <parameter name="myTopicConnectionFactory" locked="false"> <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter> <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter> <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter> <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter> </parameter> </transportReceiver>
[transport.jms] listener_enable = true [[transport.jms.listener]] name = "myTopicListener" parameter.initial_naming_factory = "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory" parameter.provider_url = "tcp://localhost:61616" parameter.connection_factory_name = "TopicConnectionFactory" parameter.connection_factory_type = "topic" # [queue, topic] parameter.cache_level = "consumer"
Find more parameters.
-
FIX transport receiver
<transportReceiver name="fix" class="org.apache.synapse.transport.fix.FIXTransportListener"/>
[transport.fix] listener.enable = true
Find more parameters.
-
RabbitMQ transport receiver
<transportReceiver name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQListener"> <parameter name="AMQPConnectionFactory" locked="false"> <parameter name="rabbitmq.server.host.name" locked="false">localhost</parameter> <parameter name="rabbitmq.server.port" locked="false">5672</parameter> <parameter name="rabbitmq.server.user.name" locked="false">guest</parameter> <parameter name="rabbitmq.server.password" locked="false">guest</parameter> </parameter> </transportReceiver>
[transport.rabbitmq] listener_enable = true [[transport.rabbitmq.listener]] name = "AMQPConnectionFactory" parameter.hostname = "localhost" parameter.port = 5672 parameter.username = "guest" parameter.password = "guest"
Find more parameters.
-
HL7 transport listener
<transportReceiver name="hl7" class="org.wso2.carbon.business.messaging.hl7.transport.HL7TransportListener"> <parameter name="port">9292</parameter> </transportReceiver>
[[custom_transport.listener]] class="org.wso2.micro.integrator.business.messaging.hl7.transport.HL7TransportListener" protocol = "hl7" parameter.'transport.hl7.TimeOut' = 10000
-
HTTP transport sender
Warning
Do not duplicate the
[transport.http]
TOML header when you enable both the JMS listener and sender. Use the TOML header once and add both parameters (listener_enabled
andsender_enabled
).<transportSender name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpSender"> <parameter name="non-blocking" locked="false">true</parameter> </transportSender>
[transport.http] #listener_enable = true sender.enable = true
Find more parameters.
-
HTTPS transport sender
<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender"> <parameter name="non-blocking" locked="false">true</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> </transportSender>
[transport.http] sender.secured_enable = true sender.keystore.location ="repository/resources/security/wso2carbon.jks" sender.keystore.type = "JKS" sender.keystore.password = "wso2carbon" sender.keystore.key_password = "wso2carbon" sender.truststore.location = "repository/resources/security/client-truststore.jks" sender.truststore.type = "JKS" sender.truststore.password = "wso2carbon"
Find more parameters.
-
VFS transport sender
<transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/>
[transport.vfs] sender.enable = true
Find more parameters.
-
VFS transport sender
<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">synapse.demo.0@gmail.com</parameter> </transportSender>
[[transport.mail.sender]] name = "mailto" parameter.hostname = "smtp.gmail.com" parameter.port = "587" parameter.enable_tls = true parameter.auth = true parameter.username = "synapse.demo.0" parameter.password = "mailpassword" parameter.from = "synapse.demo.0@gmail.com"
Find more parameters.
-
FIX transport sender
<transportSender name="fix" class="org.apache.synapse.transport.fix.FIXTransportSender"/>
[transport.fix] sender.enable = true
Find more parameters.
-
RabbitMQ transport sender
<transportSender name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQSender"/>
[transport.rabbitmq] sender_enable = true
Find more parameters.
-
JMS transport sender
<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
[transport.jms] sender_enable = true
Find more parameters.
-
HL7 transport sender
<transportSender name="hl7" class="org.wso2.carbon.business.messaging.hl7.transport.HL7TransportSender"> <!--parameter name="non-blocking">true</parameter--> </transportSender>
[[custom_transport.sender]] class="org.wso2.micro.integrator.business.messaging.hl7.transport.HL7TransportSender" protocol = "hl7"
synapse.properties
Synapse thread pool properties:
synapse.threads.core = 20
synapse.threads.max = 100
[mediation]
synapse.core_threads = 20
synapse.max_threads = 100
Find more parameters.
passthru-http.properties
-
HTTP/S worker pool properties
worker_pool_size_core=400 worker_pool_size_max=400 worker_pool_queue_length=-1
[transport.http] core_worker_pool_size = 400 # inferred default: 400 max_worker_pool_size = 400 # inferred default: 400 worker_pool_queue_length = -1
Find more parameters.
-
Preserve headers
http.user.agent.preserve=false http.server.preserve=true http.headers.preserve=Content-Type
[transport.http] preserve_http_user_agent = false preserve_http_server_name = true preserve_http_headers = ["Content-Type"]
Find more parameters.
jndi.properties
-
JMS connection factory
connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5675' connectionfactory.TopicConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5675'
[transport.jndi.connection_factories] 'connectionfactory.QueueConnectionFactory' = "amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5675'" 'connectionfactory.TopicConnectionFactory' = "amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5675'"
Find more parameters.
-
JMS queue
queue.JMSMS=JMSMS
[transport.jndi.queue] JMSMS = "JMSMS"
Find more parameters.
-
JMS topic
topic.MyTopic = example.MyTopic
[transport.jndi.topic] MyTopic = "example.MyTopic"
Find more parameters.
tasks-config.xml
<taskServerCount>1</taskServerCount>
<defaultLocationResolver>
<locationResolverClass>org.wso2.carbon.ntask.core.impl.RoundRobinTaskLocationResolver</locationResolverClass>
</defaultLocationResolver>
[task_handling]
resolver_class = "org.wso2.micro.integrator.ntask.coordination.task.resolver.RoundRobinResolver"
[[task_resolver]]
task_server_count = "3"
Find more parameters.
The complete list of TOML configurations for the Micro Integrator are listed in the product configuration catalog.
Migrating Log4j configurations¶
WSO2 ESB 5.0 (and all ESB versions prior to EI 6.6.0) use log4j. In WSO2 EI 7 Micro Integrator, the carbon.logging.jar
file is not packed and the pax-logging-api
is used instead. With this upgrade, the log4j version is also updated to log4j2.
See the topics given below to configure log4j2 in EI 7 Micro Integrator.
- Log4j2 properties
- Correlation logs
- Wire logs
- Service-level logs
- REST API Access logs
- Managing Log Growth
Follow the instructions given below if you have used a custom log4j component in your older ESB version.
-
Replace carbon logging or
commons.logging
dependencies with pax-logging dependency as shown below.<!-- Pax Logging --> <dependency> <groupId>org.ops4j.pax.logging</groupId> <artifactId>pax-logging-api</artifactId> <version>${pax.logging.api.version}</version> </dependency> <!-- Pax Logging Version --> <pax.logging.api.version>1.10.1</pax.logging.api.version>
-
If log4j dependency is directly used, apply one of the options given below.
- Replace the log4j dependency (shown below) with log4j2 and rewrite the loggers accordingly.
<dependency> <groupId>org.ops4j.pax.logging</groupId> <artifactId>pax-logging-log4j2</artifactId> <version>${pax.logging.log4j2.version}</version> </dependency>
- Replace the log4j dependency with pax-logging dependency and rewrite the loggers using
commons.logging
accordingly.
- Replace the log4j dependency (shown below) with log4j2 and rewrite the loggers accordingly.
-
If
commons.logging
is imported using Import-Package, add the version range.org.apache.commons.logging; version="${commons.logging.version.range}" <commons.logging.version.range>[1.2.0,2.0.0)</commons.logging.version.range>
-
Follow the instructions on configuring log4j2 to register the Appenders and Loggers.
Migrating encrypted passwords¶
To migrate the encrypted passwords from ESB 5.0.0, you need to first obtain the plain-text passwords. Once you have them, follow the normal procedure of encrypting secrets in EI 7. See Encrypt Secrets for instructions.
In case you need to obtain the plaintext passwords from the encrypted passwords in the WSO2 ESB 5.0.0, you can use the password decryption tool.
Follow the instructions given below to use the password decryption tool.
-
Download the tool.
-
Copy the
org.wso2.mi.migration-1.2.0.jar
into theESB_HOME/repository/components/dropins
folder in the server. -
Create a directory named migration in
ESB_HOME
. -
Copy the migration-conf.properties file into the migration directory, and update the following property.
Property Description admin.user.name The user name of the system administrator. -
Start the server using the
migrate.from.product.version
system property as follows:sh wso2server.sh -Dmigrate.from.product.version=esb
wso2server.bat -Dmigrate.from.product.version=esb
Info
Upon successful execution, the decrypted (plain-text) values in the
secure-vault.properties
andcipher-text.properties
files will be written respectively to the<ESB_HOME>/migration/secure-vault-decrypted.properties
file and the<ESB_HOME>/migration/cipher-text-decrypted.properties
file in ESB 5.0.0.The encrypted passwords are now decrypted and you have access to the plain-text password values.
-
You can now follow the instructions in Encrypting Secrets to re-encrypt the plain text secrets for the Micro Integrator.
Migrating the Hl7 Transport¶
HL7 transport is not shipped by default in the Micro Integrator of EI 7.1.0. Therefore, see Configuring the HL7 transport to set up HL7 in the Micro Integrator.
Top