title: WSO2 APIM 3.0.0 : Unable to SIGN-IN from /publisher and /devportal after installing certificate
body: <p>We have installed WSO2 API Manager version: 3.0.0 and it is working fine with <em>localhost</em> and as well as with different hostname though it shows <em>Not secure</em> site on address bar.
  But when we install valid CA signed certificate and update <em>deployment.toml</em> file with primary keystore details it throws below error on server startup </p>
  
  <pre><code>TID: [-1] [] [2020-05-14 19:40:56,552]  WARN {org.wso2.carbon.apimgt.gateway.throttling.util.KeyTemplateRetriever} - Failed retrieving throttling data from remote endpoint: hostname in certificate didn't match: &lt;localhost&gt; != &lt;*.example.com&gt; OR &lt;*.example.com&gt; OR &lt;example.com&gt;. Retrying after 15 seconds...
  TID: [-1] [] [2020-05-14 19:40:57,425]  WARN {org.wso2.carbon.apimgt.gateway.jwt.RevokedJWTTokensRetriever} - Failed retrieving revoked JWT token signatures from remote endpoint: hostname in certificate didn't match: &lt;localhost&gt; != &lt;*.example.com&gt; OR &lt;*.example.com&gt; OR &lt;example.com&gt;. Retrying after 15 seconds...
  TID: [-1] [] [2020-05-14 19:40:57,748]  WARN {org.wso2.carbon.apimgt.gateway.throttling.util.BlockingConditionRetriever} - Failed retrieving Blocking Conditions from remote endpoint: hostname in certificate didn't match: &lt;localhost&gt; != &lt;*.example.com&gt; OR &lt;*.example.com&gt; OR &lt;example.com&gt;. Retrying after 15 seconds...
  </code></pre>
  
  <p><em>Note</em>- here, i have replaced actual domain name with <em>example</em> in above log statements due to privacy policy</p>
  
  <p>After server startup, we are able to access <em>management console</em> and <em>/devportal</em>, But when we try to access <em>/publisher</em> or SIGN-IN from with in <em>devportal</em> it throws 500 error.</p>
  
  <p>Without certificate and no change to <em>keystore.primary</em> in <em>deployment.toml</em>
  <a href="https://i.stack.imgur.com/J0RIj.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/J0RIj.png" alt="without certificate"></a></p>
  
  <p>With certificate and added <em>keystore.primary</em> into <em>deployment.toml</em>
  <a href="https://i.stack.imgur.com/wjquH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wjquH.png" alt="with certificate"></a></p>
  
  <p>we see the below SSL error when we try to access /Publisher or SIGN-IN from /devportal</p>
  
  <pre><code>TID: [-1234] [publisher] [2020-05-15 19:12:43,562] ERROR {org.jaggeryjs.jaggery.core.manager.WebAppManager} - org.mozilla.javascript.WrappedException: Wrapped org.jaggeryjs.scriptengine.exceptions.ScriptException: javax.net.ssl.SSLPeerUnverifiedException: SSL peer failed hostname validation for name: localhost (&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js#220) org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.WrappedException: Wrapped org.jaggeryjs.scriptengine.exceptions.ScriptException: javax.net.ssl.SSLPeerUnverifiedException: SSL peer failed hostname validation for name: localhost (&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js#220)
      at org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:587)
      at org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:289)
      at org.jaggeryjs.jaggery.core.manager.WebAppManager.exec(WebAppManager.java:589)
      at org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:508)
      at org.jaggeryjs.jaggery.core.JaggeryServlet.doGet(JaggeryServlet.java:24)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:352)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
      at org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:76)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
      at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80)
      at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:100)
      at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:74)
      at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
      at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
      at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
      at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:145)
      at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
      at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
      at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:116)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
      at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
      at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
      at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
      at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      at java.base/java.lang.Thread.run(Thread.java:834)
  Caused by: org.mozilla.javascript.WrappedException: Wrapped org.jaggeryjs.scriptengine.exceptions.ScriptException: javax.net.ssl.SSLPeerUnverifiedException: SSL peer failed hostname validation for name: localhost (&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js#220)
      at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754)
      at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148)
      at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:386)
      at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
      at org.jaggeryjs.rhino.&lt;&lt;http&gt;&gt;.META_INF.scripts.c0._c_anonymous_5(&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js:220)
      at org.jaggeryjs.rhino.&lt;&lt;http&gt;&gt;.META_INF.scripts.c0.call(&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js)
      at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
      at org.jaggeryjs.rhino.&lt;&lt;http&gt;&gt;.META_INF.scripts.c0._c_anonymous_7(&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js:228)
      at org.jaggeryjs.rhino.&lt;&lt;http&gt;&gt;.META_INF.scripts.c0.call(&lt;&lt;http&gt;&gt;/META-INF/scripts/http.js)
      at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:63)
      at org.jaggeryjs.rhino.publisher.services.login.c0._c_script_0(/publisher/services/login/idp.jag:35)
      at org.jaggeryjs.rhino.publisher.services.login.c0.call(/publisher/services/login/idp.jag)
      at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
      at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
      at org.jaggeryjs.rhino.publisher.services.login.c0.call(/publisher/services/login/idp.jag)
      at org.jaggeryjs.rhino.publisher.services.login.c0.exec(/publisher/services/login/idp.jag)
      at org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:583)
      ... 50 more
  Caused by: org.jaggeryjs.scriptengine.exceptions.ScriptException: javax.net.ssl.SSLPeerUnverifiedException: SSL peer failed hostname validation for name: localhost
      at org.jaggeryjs.hostobjects.xhr.XMLHttpRequestHostObject.executeRequest(XMLHttpRequestHostObject.java:572)
      at org.jaggeryjs.hostobjects.xhr.XMLHttpRequestHostObject.send(XMLHttpRequestHostObject.java:549)
      at org.jaggeryjs.hostobjects.xhr.XMLHttpRequestHostObject.jsFunction_send(XMLHttpRequestHostObject.java:301)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
      ... 65 more
  Caused by: javax.net.ssl.SSLPeerUnverifiedException: SSL peer failed hostname validation for name: localhost
      at org.opensaml.ws.soap.client.http.TLSProtocolSocketFactory.verifyHostname(TLSProtocolSocketFactory.java:233)
      at org.opensaml.ws.soap.client.http.TLSProtocolSocketFactory.createSocket(TLSProtocolSocketFactory.java:186)
      at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
      at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
      at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
      at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
      at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
      at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
      at org.jaggeryjs.hostobjects.xhr.XMLHttpRequestHostObject.executeRequest(XMLHttpRequestHostObject.java:555)
      ... 72 more
  </code></pre>
  
  <p>Here is my <em>deployment.toml</em> file</p>
  
  <pre><code>[server]
  hostname = "example.com"
  node_ip = "127.0.0.1"
  #offset=0
  mode = "single" #single or ha
  base_path = "${carbon.protocol}://${carbon.host}:${carbon.management.port}"
  #discard_empty_caches = false
  server_role = "default"
  
  [super_admin]
  username = "admin"
  password = "admin"
  create_admin_account = true
  
  [user_store]
  type = "database"
  
  [database.apim_db]
  type = "h2"
  url = "jdbc:h2:./repository/database/WSO2AM_DB;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE"
  username = "wso2carbon"
  password = "wso2carbon"
  
  [database.shared_db]
  type = "h2"
  url = "jdbc:h2:./repository/database/WSO2SHARED_DB;DB_CLOSE_ON_EXIT=FALSE"
  username = "wso2carbon"
  password = "wso2carbon"
  
  [keystore.primary]
  file_name =  "keystore.jks"
  type =  "PKCS12"
  password =  "mypassword"
  alias =  "1"
  key_password =  "mypassword"
  
  [[apim.gateway.environment]]
  name = "Production and Sandbox"
  type = "hybrid"
  display_in_api_console = true
  description = "This is a hybrid gateway that handles both production and sandbox token traffic."
  show_as_token_endpoint_url = true
  service_url = "https://localhost:${mgt.transport.https.port}/services/"
  username= "${admin.username}"
  password= "${admin.password}"
  ws_endpoint = "ws://localhost:9099"
  wss_endpoint = "wss://localhost:8099"
  http_endpoint = "http://localhost:${http.nio.port}"
  https_endpoint = "https://localhost:${https.nio.port}"
  
  #[apim.cache.gateway_token]
  #enable = true
  #expiry_time = "900s"
  
  #[apim.cache.resource]
  #enable = true
  #expiry_time = "900s"
  
  #[apim.cache.km_token]
  #enable = false
  #expiry_time = "15m"
  
  #[apim.cache.recent_apis]
  #enable = false
  
  #[apim.cache.scopes]
  #enable = true
  
  #[apim.cache.publisher_roles]
  #enable = true
  
  #[apim.cache.jwt_claim]
  #enable = true
  #expiry_time = "15m"
  
  #[apim.cache.tags]
  #expiry_time = "2m"
  
  #[apim.analytics]
  #enable = false
  #store_api_url = "https://localhost:7444"
  #username = "$ref{super_admin.username}"
  #password = "$ref{super_admin.password}"
  #event_publisher_type = "default"
  #event_publisher_impl = "org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher"
  #publish_response_size = true
  
  #[[apim.analytics.url_group]]
  #analytics_url =["tcp://analytics1:7611","tcp://analytics2:7611"]
  #analytics_auth_url =["ssl://analytics1:7711","ssl://analytics2:7711"]
  #type = "loadbalance"
  
  #[[apim.analytics.url_group]]
  #analytics_url =["tcp://analytics1:7612","tcp://analytics2:7612"]
  #analytics_auth_url =["ssl://analytics1:7712","ssl://analytics2:7712"]
  #type = "failover"
  
  #[apim.key_manager]
  #service_url = "https://localhost:${mgt.transport.https.port}/services/"
  #username = "$ref{super_admin.username}"
  #password = "$ref{super_admin.password}"
  #pool.init_idle_capacity = 50
  #pool.max_idle = 100
  #key_validation_handler_type = "default"
  #key_validation_handler_type = "custom"
  #key_validation_handler_impl = "org.wso2.carbon.apimgt.keymgt.handlers.DefaultKeyValidationHandler"
  
  #[apim.jwt]
  #enable = true
  #encoding = "base64" # base64,base64url
  #generator_impl = "org.wso2.carbon.apimgt.keymgt.token.JWTGenerator"
  #claim_dialect = "http://wso2.org/claims"
  #header = "X-JWT-Assertion"
  #signing_algorithm = "SHA256withRSA"
  #enable_user_claims = true
  #claims_extractor_impl = "org.wso2.carbon.apimgt.impl.token.DefaultClaimsRetriever"
  
  #[apim.oauth_config]
  #enable_outbound_auth_header = false
  #auth_header = "Authorization"
  #revoke_endpoint = "https://localhost:${https.nio.port}/revoke"
  #enable_token_encryption = false
  #enable_token_hashing = false
  
  [apim.devportal]
  url = "https://example.com:${mgt.transport.https.port}/devportal"
  #enable_application_sharing = false
  #if application_sharing_type, application_sharing_impl both defined priority goes to application_sharing_impl
  #application_sharing_type = "default" #changed type, saml, default #todo: check the new config for rest api
  #application_sharing_impl = "org.wso2.carbon.apimgt.impl.SAMLGroupIDExtractorImpl"
  #display_multiple_versions = false
  #display_deprecated_apis = false
  #enable_comments = true
  #enable_ratings = true
  #enable_forum = true
  
  [apim.cors]
  allow_origins = "*"
  allow_methods = ["GET","PUT","POST","DELETE","PATCH","OPTIONS"]
  allow_headers = ["authorization","Access-Control-Allow-Origin","Content-Type","SOAPAction"]
  allow_credentials = false
  
  #[apim.throttling]
  #enable_data_publishing = true
  #enable_policy_deploy = true
  #enable_blacklist_condition = true
  #enable_persistence = true
  #throttle_decision_endpoints = ["tcp://localhost:5672","tcp://localhost:5672"]
  
  #[apim.throttling.blacklist_condition]
  #start_delay = "5m"
  #period = "1h"
  
  #[apim.throttling.jms]
  #start_delay = "5m"
  
  #[apim.throttling.event_sync]
  #hostName = "0.0.0.0"
  #port = 11224
  
  #[apim.throttling.event_management]
  #hostName = "0.0.0.0"
  #port = 10005
  
  #[[apim.throttling.url_group]]
  #traffic_manager_urls = ["tcp://localhost:9611","tcp://localhost:9611"]
  #traffic_manager_auth_urls = ["ssl://localhost:9711","ssl://localhost:9711"]
  #type = "loadbalance"
  
  #[[apim.throttling.url_group]]
  #traffic_manager_urls = ["tcp://localhost:9611","tcp://localhost:9611"]
  #traffic_manager_auth_urls = ["ssl://localhost:9711","ssl://localhost:9711"]
  #type = "failover"
  
  #[apim.workflow]
  #enable = false
  #service_url = "https://localhost:9445/bpmn"
  #username = "$ref{super_admin.username}"
  #password = "$ref{super_admin.password}"
  #callback_endpoint = "https://localhost:${mgt.transport.https.port}/api/am/admin/v0.15/workflows/update-workflow-status"
  #token_endpoint = "https://localhost:${https.nio.port}/token"
  #client_registration_endpoint = "https://localhost:${mgt.transport.https.port}/client-registration/v0.15/register"
  #client_registration_username = "$ref{super_admin.username}"
  #client_registration_password = "$ref{super_admin.password}"
  
  #data bridge config
  #[transport.receiver]
  #type = "binary"
  #worker_threads = 10
  #session_timeout = "30m"
  #keystore.file_name = "$ref{keystore.tls.file_name}"
  #keystore.password = "$ref{keystore.tls.password}"
  #tcp_port = 9611
  #ssl_port = 9711
  #ssl_receiver_thread_pool_size = 100
  #tcp_receiver_thread_pool_size = 100
  #ssl_enabled_protocols = ["TLSv1","TLSv1.1","TLSv1.2"]
  #ciphers = ["SSL_RSA_WITH_RC4_128_MD5","SSL_RSA_WITH_RC4_128_SHA"]
  
  #[apim.notification]
  #from_address = "APIM.com"
  #username = "APIM"
  #password = "APIM+123"
  #hostname = "localhost"
  #port = 3025
  #enable_start_tls = false
  #enable_authentication = true
  
  #[apim.token.revocation]
  #notifier_impl = "org.wso2.carbon.apimgt.keymgt.events.TokenRevocationNotifierImpl"
  #enable_realtime_notifier = true
  #realtime_notifier.ttl = 5000
  #enable_persistent_notifier = true
  #persistent_notifier.hostname = "https://localhost:2379/v2/keys/jti/"
  #persistent_notifier.ttl = 5000
  #persistent_notifier.username = "root"
  #persistent_notifier.password = "root"
  
  [[event_handler]]
  name="userPostSelfRegistration"
  subscriptions=["POST_ADD_USER"]
  
  [service_provider]
  sp_name_regex = "^[\\sa-zA-Z0-9._-]*$"
  </code></pre>
  
  <p>Below is the <em>wrapper.conf</em> used to start wso2 as a service. placed this file under <em>yajsw-stable-12.14\conf</em></p>
  
  <pre><code>#********************************************************************
  # working directory
  #********************************************************************
  wrapper.working.dir=${CARBON_HOME}/
  # Java Main class.
  # YAJSW: default is "org.rzo.yajsw.app.WrapperJVMMain"
  # DO NOT SET THIS PROPERTY UNLESS YOU HAVE YOUR OWN IMPLEMENTATION
  # wrapper.java.mainclass=
  #********************************************************************
  # tmp folder
  # yajsw creates temporary files named in_.. out_.. err_.. jna..
  # per default these are placed in jna.tmpdir.
  # jna.tmpdir is set in setenv batch file to &lt;yajsw&gt;/tmp
  #********************************************************************
  wrapper.tmp.path = ${jna_tmpdir}
  #********************************************************************
  # Application main class or native executable
  # One of the following properties MUST be defined
  #********************************************************************
  # Java Application main class
  wrapper.java.app.mainclass=org.wso2.carbon.bootstrap.Bootstrap
  # Log Level for console output.  (See docs for log levels)
  wrapper.console.loglevel=INFO
  # Log file to use for wrapper output logging.
  wrapper.logfile=${wrapper_home}\/log\/wrapper.log
  # Format of output for the log file.  (See docs for formats)
  #wrapper.logfile.format=LPTM
  # Log Level for log file output.  (See docs for log levels)
  #wrapper.logfile.loglevel=INFO
  # Maximum size that the log file will be allowed to grow to before
  #  the log is rolled. Size is specified in bytes.  The default value
  #  of 0, disables log rolling by size.  May abbreviate with the 'k' (kB) or
  #  'm' (mB) suffix.  For example: 10m = 10 megabytes.
  # If wrapper.logfile does not contain the string ROLLNUM it will be automatically added as suffix of the file name
  wrapper.logfile.maxsize=10m
  # Maximum number of rolled log files which will be allowed before old
  #  files are deleted.  The default value of 0 implies no limit.
  wrapper.logfile.maxfiles=10
  # Title to use when running as a console
  wrapper.console.title=WSO2 APIM Carbon
  #********************************************************************
  # Wrapper Windows Service and Posix Daemon Properties
  #********************************************************************
  # Name of the service
  wrapper.ntservice.name=WSO2APIMCARBON
  # Display name of the service
  wrapper.ntservice.displayname=WSO2 APIM Carbon
  # Description of the service
  wrapper.ntservice.description=Carbon Kernel
  #********************************************************************
  # Wrapper System Tray Properties
  #********************************************************************
  # enable system tray
  wrapper.tray = true
  # TCP/IP port. If none is defined multicast discovery is used to find the port
  # Set the port in case multicast is not possible.
  wrapper.tray.port = 15002
  #********************************************************************
  # Exit Code Properties
  # Restart on non zero exit code
  #********************************************************************
  wrapper.on_exit.0=SHUTDOWN
  wrapper.on_exit.default=RESTART
  #********************************************************************
  # Trigger actions on console output
  #********************************************************************
  # On Exception show message in system tray
  wrapper.filter.trigger.0=Exception
  wrapper.filter.script.0=${wrapper_home}/scripts/trayMessage.gv
  wrapper.filter.script.0.args=Exception
  #********************************************************************
  # genConfig: further Properties generated by genConfig
  #********************************************************************
  placeHolderSoGenPropsComeHere=
  wrapper.java.command = ${JAVA_HOME}/bin/java
  wrapper.java.classpath.1 = ${CARBON_HOME}/bin/*.jar
  wrapper.java.classpath.2 = ${CARBON_HOME}/lib/commons-lang-*.jar
  wrapper.java.classpath.3 = ${CARBON_HOME}/lib/*.jar
  wrapper.app.parameter.1 = org.wso2.carbon.bootstrap.Bootstrap
  wrapper.app.parameter.2 = RUN
  wrapper.java.additional.1 = -Xbootclasspath/a:${CARBON_HOME}/lib/xboot/*.jar
  wrapper.java.additional.2 = -Xms256m
  wrapper.java.additional.3 = -Xmx1024m
  wrapper.java.additional.4 = -XX:MaxPermSize=256m
  wrapper.java.additional.5 = -XX:+HeapDumpOnOutOfMemoryError
  wrapper.java.additional.6 = -XX:HeapDumpPath=${CARBON_HOME}/repository/logs/heap-dump.hprof
  wrapper.java.additional.7 = -Dcom.sun.management.jmxremote
  wrapper.java.additional.8 = -Dcarbon.registry.root=\/
  wrapper.java.additional.9 = -Dcarbon.home=${CARBON_HOME}
  wrapper.java.additional.10 = -Dwso2.server.standalone=true
  wrapper.java.additional.11 = -Djava.command=${JAVA_HOME}/bin/java
  wrapper.java.additional.12 = -Djava.io.tmpdir=${CARBON_HOME}/tmp
  wrapper.java.additional.13 = -Dcatalina.base=${CARBON_HOME}/lib/tomcat
  wrapper.java.additional.14 = -Djava.util.logging.config.file=${CARBON_HOME}/repository/conf/etc/logging-bridge.properties
  wrapper.java.additional.15 = -Dcarbon.config.dir.path=${CARBON_HOME}/repository/conf
  wrapper.java.additional.16 = -Dcarbon.logs.path=${CARBON_HOME}/repository/logs
  wrapper.java.additional.17 = -Dcomponents.repo=${CARBON_HOME}/repository/components/plugins
  wrapper.java.additional.18 = -Dconf.location=${CARBON_HOME}/repository/conf
  wrapper.java.additional.19 = -Dcom.atomikos.icatch.file=${CARBON_HOME}/lib/transactions.properties
  wrapper.java.additional.20 = -Dcom.atomikos.icatch.hide_init_file_path=true
  wrapper.java.additional.21 = -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
  wrapper.java.additional.22 = -Dcom.sun.jndi.ldap.connect.pool.authentication=simple
  wrapper.java.additional.23 = -Dcom.sun.jndi.ldap.connect.pool.timeout=3000
  wrapper.java.additional.24 = -Dorg.terracotta.quartz.skipUpdateCheck=true
  wrapper.java.additional.25 = -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
  wrapper.java.additional.26 = -Dfile.encoding=UTF8
  wrapper.java.additional.27 = -DworkerNode=false
  wrapper.java.additional.28 = -Dhttpclient.hostnameVerifier=DefaultAndLocalhost
  wrapper.java.additional.29 = -Dcarbon.new.config.dir.path=${CARBON_HOME}/repository/resources/conf
  </code></pre>