You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Thusitha Thilina Dayaratne <th...@wso2.com> on 2015/03/09 10:34:03 UTC

java.lang.Error: factory already defined when trying to start the Tomcat

Hi,

When I'm trying to start the embedded tomcat server I'm getting following
exception. Could someone tell me why am I getting that? Did I missed
anything in configuration?
I'm using JDK 1.8 and tomcat 8.0.20

ERROR {org.apache.catalina.core.ContainerBase} -  A child container failed
> during start
> java.util.concurrent.ExecutionException:
> org.apache.catalina.LifecycleException: Failed to start component
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/]]
> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
> at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.catalina.LifecycleException: Failed to start
> component
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> ... 6 more
> Caused by: org.apache.catalina.LifecycleException: Failed to initialize
> component [org.apache.catalina.webresources.StandardRoot@7658b991]
> at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
> at
> org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4840)
> at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4970)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 6 more
> Caused by: java.lang.Error: factory already defined
> at java.net.URL.setURLStreamHandlerFactory(URL.java:1105)
> at
> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.<init>(TomcatURLStreamHandlerFactory.java:122)
> at
> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.getInstanceInternal(TomcatURLStreamHandlerFactory.java:51)
> at
> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.register(TomcatURLStreamHandlerFactory.java:75)
> at
> org.apache.catalina.webresources.StandardRoot.registerURLStreamHandlerFactory(StandardRoot.java:677)
> at
> org.apache.catalina.webresources.StandardRoot.initInternal(StandardRoot.java:660)
> at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
> ... 10 more
> [2015-03-09 14:58:45,913] ERROR {org.apache.catalina.core.ContainerBase} -
>  A child container failed during start
> java.util.concurrent.ExecutionException:
> org.apache.catalina.LifecycleException: Failed to start component
> [StandardEngine[Catalina].StandardHost[localhost]]
> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
> at
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at
> org.wso2.carbon.tomcat.ext.service.ExtendedStandardService.startInternal(ExtendedStandardService.java:49)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at
> org.wso2.carbon.tomcat.internal.CarbonTomcat.start(CarbonTomcat.java:103)
> at
> org.wso2.carbon.tomcat.internal.ServerManager$1.run(ServerManager.java:99)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.catalina.LifecycleException: Failed to start
> component [StandardEngine[Catalina].StandardHost[localhost]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
> at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> ... 1 more
> Caused by: org.apache.catalina.LifecycleException: A child container
> failed during start
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
> at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 6 more
> [2015-03-09 14:58:45,914] ERROR
> {org.wso2.carbon.tomcat.internal.ServerManager} -  tomcat life-cycle
> exception
> org.apache.catalina.LifecycleException: Failed to start component
> [StandardServer[8005]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> at
> org.wso2.carbon.tomcat.internal.CarbonTomcat.start(CarbonTomcat.java:103)
> at
> org.wso2.carbon.tomcat.internal.ServerManager$1.run(ServerManager.java:99)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.catalina.LifecycleException: Failed to start
> component [StandardService[Catalina]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> at
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 3 more
> Caused by: org.apache.catalina.LifecycleException: Failed to start
> component [StandardEngine[Catalina]]
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
> at
> org.wso2.carbon.tomcat.ext.service.ExtendedStandardService.startInternal(ExtendedStandardService.java:49)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 5 more
> Caused by: org.apache.catalina.LifecycleException: A child container
> failed during start
> at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
> at
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> ... 7 more


I have extended the *StandardService *class and override the *startInternal
*method as follows

protected void startInternal() throws LifecycleException {
    if (log.isDebugEnabled()) {
        log.debug("starting extended standard service  :   " + this);
    }
    setState(LifecycleState.STARTING);
    // Start our defined Container first
    if (container != null) {
        synchronized (container) {
            container.start();
        }
    }
    synchronized (executors) {
        for (Executor executor : executors) {
            executor.start();
        }
    }
    mapperListener.start();
}

I debug the code and found out that container.start(); throws the
Exception. My *server.xml* file is as follows

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">

  <Service className="org.wso2.carbon.tomcat.ext.service.ExtendedStandardService"
name="Catalina">

    <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
                port="9763"
                redirectPort="9443"
                bindOnInit="false"
                maxHttpHeaderSize="8192"
                acceptorThreadCount="2"
                maxThreads="250"
                minSpareThreads="50"
                disableUploadTimeout="false"
                connectionUploadTimeout="120000"
                maxKeepAliveRequests="200"
                acceptCount="200"
                server="WSO2 Carbon Server"
                compression="on"
                compressionMinSize="2048"
                noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"
                URIEncoding="UTF-8"/>

    <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
                port="9443"
                bindOnInit="false"
                sslProtocol="TLS"
                maxHttpHeaderSize="8192"
                acceptorThreadCount="2"
                maxThreads="250"
                minSpareThreads="50"
                disableUploadTimeout="false"
                enableLookups="false"
                connectionUploadTimeout="120000"
                maxKeepAliveRequests="200"
                acceptCount="200"
                server="WSO2 Carbon Server"
                clientAuth="false"
                compression="on"
                scheme="https"
                secure="true"
                SSLEnabled="true"
                compressionMinSize="2048"
                noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"

keystoreFile="${carbon.home}/repository/resources/security/wso2carbon.jks"
                keystorePass="wso2carbon"
                URIEncoding="UTF-8"/>



    <Engine name="Catalina" defaultHost="localhost">

      <!--Realm className="org.apache.catalina.realm.MemoryRealm"
pathname="${carbon.home}/repository/conf/tomcat/tomcat-users.xml"/-->

      <Realm className="org.wso2.carbon.tomcat.ext.realms.CarbonTomcatRealm"/>

      <Host name="localhost" unpackWARs="true" deployOnStartup="false"
autoDeploy="false"
appBase="${carbon.home}/repository/deployment/server/webapps/">
          <Valve
className="org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve"/>
          <Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${carbon.home}/repository/logs"
               prefix="http_access_" suffix=".log"
               pattern="combined" />
          <Valve
className="org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve"
threshold="600"/>
          <Valve className="org.wso2.carbon.tomcat.ext.valves.CompositeValve"/>
      </Host>
    </Engine>
  </Service>
</Server>

-- 
Thusitha Dayaratne
Software Engineer
WSO2 Inc. - lean . enterprise . middleware |  wso2.com

Mobile  +94712756809
Blog      alokayasoya.blogspot.com
About    http://about.me/thusithathilina

Re: java.lang.Error: factory already defined when trying to start the Tomcat

Posted by Mark Thomas <ma...@apache.org>.
On 09/03/2015 09:34, Thusitha Thilina Dayaratne wrote:
> Hi,
> 
> When I'm trying to start the embedded tomcat server I'm getting following
> exception. Could someone tell me why am I getting that? Did I missed
> anything in configuration?
> I'm using JDK 1.8 and tomcat 8.0.20

The more times you ask exactly the same question, the less chance there
is that someone will answer it.

The stack trace looks pretty self-explanatory with an obvious root cause.

Mark


> 
> ERROR {org.apache.catalina.core.ContainerBase} -  A child container failed
>> during start
>> java.util.concurrent.ExecutionException:
>> org.apache.catalina.LifecycleException: Failed to start component
>> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/]]
>> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
>> at
>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
>> at
>> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: org.apache.catalina.LifecycleException: Failed to start
>> component
>> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/]]
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
>> ... 6 more
>> Caused by: org.apache.catalina.LifecycleException: Failed to initialize
>> component [org.apache.catalina.webresources.StandardRoot@7658b991]
>> at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
>> at
>> org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4840)
>> at
>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4970)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> ... 6 more
>> Caused by: java.lang.Error: factory already defined
>> at java.net.URL.setURLStreamHandlerFactory(URL.java:1105)
>> at
>> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.<init>(TomcatURLStreamHandlerFactory.java:122)
>> at
>> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.getInstanceInternal(TomcatURLStreamHandlerFactory.java:51)
>> at
>> org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.register(TomcatURLStreamHandlerFactory.java:75)
>> at
>> org.apache.catalina.webresources.StandardRoot.registerURLStreamHandlerFactory(StandardRoot.java:677)
>> at
>> org.apache.catalina.webresources.StandardRoot.initInternal(StandardRoot.java:660)
>> at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
>> ... 10 more
>> [2015-03-09 14:58:45,913] ERROR {org.apache.catalina.core.ContainerBase} -
>>  A child container failed during start
>> java.util.concurrent.ExecutionException:
>> org.apache.catalina.LifecycleException: Failed to start component
>> [StandardEngine[Catalina].StandardHost[localhost]]
>> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
>> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
>> at
>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
>> at
>> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> at
>> org.wso2.carbon.tomcat.ext.service.ExtendedStandardService.startInternal(ExtendedStandardService.java:49)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> at
>> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> at
>> org.wso2.carbon.tomcat.internal.CarbonTomcat.start(CarbonTomcat.java:103)
>> at
>> org.wso2.carbon.tomcat.internal.ServerManager$1.run(ServerManager.java:99)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: org.apache.catalina.LifecycleException: Failed to start
>> component [StandardEngine[Catalina].StandardHost[localhost]]
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> ... 1 more
>> Caused by: org.apache.catalina.LifecycleException: A child container
>> failed during start
>> at
>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
>> at
>> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> ... 6 more
>> [2015-03-09 14:58:45,914] ERROR
>> {org.wso2.carbon.tomcat.internal.ServerManager} -  tomcat life-cycle
>> exception
>> org.apache.catalina.LifecycleException: Failed to start component
>> [StandardServer[8005]]
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
>> at
>> org.wso2.carbon.tomcat.internal.CarbonTomcat.start(CarbonTomcat.java:103)
>> at
>> org.wso2.carbon.tomcat.internal.ServerManager$1.run(ServerManager.java:99)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: org.apache.catalina.LifecycleException: Failed to start
>> component [StandardService[Catalina]]
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
>> at
>> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> ... 3 more
>> Caused by: org.apache.catalina.LifecycleException: Failed to start
>> component [StandardEngine[Catalina]]
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
>> at
>> org.wso2.carbon.tomcat.ext.service.ExtendedStandardService.startInternal(ExtendedStandardService.java:49)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> ... 5 more
>> Caused by: org.apache.catalina.LifecycleException: A child container
>> failed during start
>> at
>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
>> at
>> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> ... 7 more
> 
> 
> I have extended the *StandardService *class and override the *startInternal
> *method as follows
> 
> protected void startInternal() throws LifecycleException {
>     if (log.isDebugEnabled()) {
>         log.debug("starting extended standard service  :   " + this);
>     }
>     setState(LifecycleState.STARTING);
>     // Start our defined Container first
>     if (container != null) {
>         synchronized (container) {
>             container.start();
>         }
>     }
>     synchronized (executors) {
>         for (Executor executor : executors) {
>             executor.start();
>         }
>     }
>     mapperListener.start();
> }
> 
> I debug the code and found out that container.start(); throws the
> Exception. My *server.xml* file is as follows
> 
> <?xml version='1.0' encoding='utf-8'?>
> <Server port="8005" shutdown="SHUTDOWN">
> 
>   <Service className="org.wso2.carbon.tomcat.ext.service.ExtendedStandardService"
> name="Catalina">
> 
>     <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
>                 port="9763"
>                 redirectPort="9443"
>                 bindOnInit="false"
>                 maxHttpHeaderSize="8192"
>                 acceptorThreadCount="2"
>                 maxThreads="250"
>                 minSpareThreads="50"
>                 disableUploadTimeout="false"
>                 connectionUploadTimeout="120000"
>                 maxKeepAliveRequests="200"
>                 acceptCount="200"
>                 server="WSO2 Carbon Server"
>                 compression="on"
>                 compressionMinSize="2048"
>                 noCompressionUserAgents="gozilla, traviata"
> 
> compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"
>                 URIEncoding="UTF-8"/>
> 
>     <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
>                 port="9443"
>                 bindOnInit="false"
>                 sslProtocol="TLS"
>                 maxHttpHeaderSize="8192"
>                 acceptorThreadCount="2"
>                 maxThreads="250"
>                 minSpareThreads="50"
>                 disableUploadTimeout="false"
>                 enableLookups="false"
>                 connectionUploadTimeout="120000"
>                 maxKeepAliveRequests="200"
>                 acceptCount="200"
>                 server="WSO2 Carbon Server"
>                 clientAuth="false"
>                 compression="on"
>                 scheme="https"
>                 secure="true"
>                 SSLEnabled="true"
>                 compressionMinSize="2048"
>                 noCompressionUserAgents="gozilla, traviata"
> 
> compressableMimeType="text/html,text/javascript,application/x-javascript,application/javascript,application/xml,text/css,application/xslt+xml,text/xsl,image/gif,image/jpg,image/jpeg"
> 
> keystoreFile="${carbon.home}/repository/resources/security/wso2carbon.jks"
>                 keystorePass="wso2carbon"
>                 URIEncoding="UTF-8"/>
> 
> 
> 
>     <Engine name="Catalina" defaultHost="localhost">
> 
>       <!--Realm className="org.apache.catalina.realm.MemoryRealm"
> pathname="${carbon.home}/repository/conf/tomcat/tomcat-users.xml"/-->
> 
>       <Realm className="org.wso2.carbon.tomcat.ext.realms.CarbonTomcatRealm"/>
> 
>       <Host name="localhost" unpackWARs="true" deployOnStartup="false"
> autoDeploy="false"
> appBase="${carbon.home}/repository/deployment/server/webapps/">
>           <Valve
> className="org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve"/>
>           <Valve className="org.apache.catalina.valves.AccessLogValve"
> directory="${carbon.home}/repository/logs"
>                prefix="http_access_" suffix=".log"
>                pattern="combined" />
>           <Valve
> className="org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve"
> threshold="600"/>
>           <Valve className="org.wso2.carbon.tomcat.ext.valves.CompositeValve"/>
>       </Host>
>     </Engine>
>   </Service>
> </Server>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org