0

I'm trying to deploy a web application on Glassfish, and it's failing with the error "One or more web fragments define the same Servlet in a conflicting way, and the Servlet is not defined in web.xml", which is strange, given that the application deploys perfectly on Tomcat.

Here's the log:

[#|2014-10-08T10:46:41.413-0300|INFO|oracle-glassfish3.1.2|org.glassfish.admingui|_ThreadID=83;_ThreadName=Thread-2;|uploadFileName=JLite.war|#]

[#|2014-10-08T10:46:52.475-0300|INFO|oracle-glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices.metroglue|_ThreadID=41;_ThreadName=Thread-2;|WS10010: Web service endpoint deployment events listener registered successfully.|#]

[#|2014-10-08T10:46:53.694-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ org/eclipse/jetty/util/thread/ThreadPool ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine ]|#]

[#|2014-10-08T10:46:53.902-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ org/eclipse/jetty/util/thread/ThreadPool ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.spring.JettyHTTPServerEngineBeanDefinitionParser$SpringJettyHTTPServerEngine ]|#]

[#|2014-10-08T10:46:54.231-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ Lorg/eclipse/jetty/util/component/Container$Listener; ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory ]|#]

[#|2014-10-08T10:46:55.011-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ Lorg/eclipse/jetty/util/component/Container$Listener; ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory ]|#]

[#|2014-10-08T10:46:55.027-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ org/eclipse/jetty/util/thread/ThreadPool ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.spring.JettyHTTPServerEngineBeanDefinitionParser$SpringJettyHTTPServerEngine ]|#]

[#|2014-10-08T10:46:55.027-0300|SEVERE|oracle-glassfish3.1.2|global|_ThreadID=41;_ThreadName=Thread-2;|Class [ org/eclipse/jetty/util/thread/ThreadPool ] not found. Error while loading [ class org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine ]|#]

[#|2014-10-08T10:46:55.105-0300|SEVERE|oracle-glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=41;_ThreadName=Thread-2;|Exception while deploying the app [JLite]|#]

[#|2014-10-08T10:46:55.105-0300|SEVERE|oracle-glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=41;_ThreadName=Thread-2;|One or more web fragments define the same Servlet in a conflicting way, and the Servlet is not defined in web.xml
java.lang.IllegalArgumentException: One or more web fragments define the same Servlet in a conflicting way, and the Servlet is not defined in web.xml
    at com.sun.enterprise.deployment.WebBundleDescriptor.combineWebComponentDescriptor(WebBundleDescriptor.java:405)
    at com.sun.enterprise.deployment.WebBundleDescriptor.addWebComponentDescriptor(WebBundleDescriptor.java:355)
    at com.sun.enterprise.deployment.WebBundleDescriptor.addCommonWebBundleDescriptor(WebBundleDescriptor.java:209)
    at com.sun.enterprise.deployment.WebBundleDescriptor.addWebBundleDescriptor(WebBundleDescriptor.java:162)
    at com.sun.enterprise.deployment.archivist.WebArchivist.postAnnotationProcess(WebArchivist.java:379)
    at com.sun.enterprise.deployment.archivist.WebArchivist.postAnnotationProcess(WebArchivist.java:89)
    at com.sun.enterprise.deployment.archivist.Archivist.readRestDeploymentDescriptors(Archivist.java:406)
    at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:380)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:243)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:252)
    at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213)
    at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:165)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:185)
    at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:94)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:827)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:769)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:368)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
    at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:214)
    at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:207)
    at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
    at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer._service(GrizzlyContainer.java:182)
    at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer.service(GrizzlyContainer.java:147)
    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:148)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:745)
|#]

This is my web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!--
 * Copyright 2004 The Apache Software Foundation.
 *
 * Licensed 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.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 

    <!-- This web.xml can be used during debugging, when there is no myfaces.jar
    library available.

    The faces-config.xml file (that is normally in the myfaces.jar) must be
    copied to the /WEB-INF directory of the web context.

    The TLDs (that are normally in the myfaces.jar) must be
    copied to the /WEB-INF/lib directory of the web context.-->
    <description>Debug web.xml</description>

    <context-param>
        <description> Comma separated list of URIs of (additional) faces config files. (e.g. /WEB-INF/my-config.xml) See JSF 1.0 PRD2, 10.3.2</description>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>/META-INF/faces-config.xml</param-value>
    </context-param>

    <context-param>
        <description> State saving method: "client" or "server" (= default) See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>

    <context-param>
        <description> This parameter tells MyFaces if javascript code should be allowed in
            the rendered HTML output. If javascript is allowed, command_link anchors will
            have javascript code that submits the corresponding form. If javascript is not
            allowed, the state saving info and nested parameters will be added as url
            parameters. Default: "true"
        </description>
        <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
        <param-value>false</param-value>
    </context-param>

    <context-param>
        <description> If true, rendered HTML code will be formatted, so that it is "human
            readable". i.e. additional line separators and whitespace will be written,
            that do not influence the HTML code. Default: "true"
        </description>
        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <description> If true, a javascript function will be rendered that is able to restore
            the former vertical scroll on every request. Convenient feature if you have
            pages with long lists and you do not want the browser page to always jump to the top
            if you trigger a link or button action that stays on the same page. Default:
            "false"
        </description>
        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
        <param-value>true</param-value>
    </context-param>

    <!-- 
        Desabilita PARTIAL_STATE_SAVING para contornar um bug com o escopo 'view' no Mojarra 2.1; 
        quando for lançada a 2.2, isto pode, em teoria, ser removido.
        http://stackoverflow.com/questions/10337015/should-partial-state-saving-be-set-to-false 
    -->
    <context-param>
        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
        <param-value>false</param-value>
    </context-param>    

    <!-- 
    <context-param>
        <description>
            Validate managed beans, navigation rules and ensure that forms are not nested.
        </description>
        <param-name>org.apache.myfaces.VALIDATE</param-name>
        <param-value>true</param-value>
    </context-param>
    -->

    <context-param>
        <param-name>org.apache.myfaces.secret</param-name>
        <param-value>NzY1NDMyMTA=</param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/spring-*.xml, /META-INF/spring-*.xml</param-value>
    </context-param>

    <!-- Use Documents Saved as *.xhtml --> 
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <!-- Skin do RichFaces -->
    <context-param>
        <param-name>org.richfaces.skin</param-name>
        <param-value>plain</param-value>
    </context-param>
    <context-param>
        <param-name>org.richfaces.enableControlSkinning</param-name>
        <param-value>false</param-value>
    </context-param>

    <!-- Usa a timezone do sistema operacional -->  
    <context-param>
        <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value>
    </context-param>

    <!-- "Desminifica" os javascripts do JSF (descomente para ativar) -->
    <!--
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>   
        <param-value>Development</param-value>
    </context-param>
    -->

    <!-- Filtro de codificação dos caracteres -->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>com.ats.framework.view.filter.CharacterEncodingFilter</filter-class>
    </filter>

    <!-- Filtro de id do contexto de conversação -->
    <filter>
        <filter-name>conversationContextIdFilter</filter-name>
        <filter-class>com.ats.framework.view.filter.ConversationContextIdFilter</filter-class>
    </filter>

    <!-- Filtro de contexto de conversação fora do JSF -->
    <filter>
        <filter-name>frameworkAdapterFilter</filter-name>
        <filter-class>org.apache.myfaces.orchestra.frameworkAdapter.basic.BasicFrameworkAdapterFilter</filter-class>
    </filter>
    <filter>
        <filter-name>requestParameterFilter</filter-name>
        <filter-class>org.apache.myfaces.orchestra.requestParameterProvider.RequestParameterServletFilter</filter-class>
    </filter>   

    <!-- Filtro OSIVF do Hibernate -->
    <filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>

    <filter>
        <filter-name>gzipFilter</filter-name>
        <filter-class> com.ats.framework.view.filter.GZIPFilter</filter-class>
    </filter>   

    <!-- Extensions Filter -->
    <filter>
        <filter-name>extensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <description>Set the size limit for uploaded files. Format: 10 - 10 bytes 10k - 10
                KB 10m - 10 MB 1g - 1 GB
            </description>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>100m</param-value>
        </init-param>
        <init-param>
            <description>Set the threshold size - files below this limit are stored in
                memory, files above this limit are stored on disk. Format: 10 - 10 bytes 10k -
                10 KB 10m - 10 MB 1g - 1 GB
            </description>
            <param-name>uploadThresholdSize</param-name>
            <param-value>100k</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>cacheExpirationFilter</filter-name>
        <filter-class> com.ats.framework.view.filter.CacheExpirationFilter</filter-class>
    </filter>

    <!-- Ajax DWR -->
    <filter>
        <filter-name>DwrFacesFilter</filter-name>
        <filter-class>org.directwebremoting.faces.FacesExtensionFilter</filter-class>
    </filter>

    <filter>
        <filter-name>cotacaoFilter</filter-name>
        <filter-class>com.ats.compra.view.servlet.CotacaoFilter</filter-class>
    </filter>

    <filter>
        <filter-name>liberacaoPDVFilter</filter-name>
        <filter-class>com.ats.venda.view.servlet.LiberacaoPDVFilter</filter-class>
    </filter>

    <!-- Filtro de codificação dos caracteres -->
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>*.ats</url-pattern>
    </filter-mapping>

    <!-- Filtro de id do contexto de conversação -->
    <filter-mapping>
        <filter-name>conversationContextIdFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>   

    <!-- Filtro de contexto de conversação fora do JSF -->
    <filter-mapping>
        <filter-name>frameworkAdapterFilter</filter-name>
        <url-pattern>/cxf/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>requestParameterFilter</filter-name>
        <url-pattern>/cxf/*</url-pattern>
    </filter-mapping>

    <!-- Filtro de expiração de cache -->
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.gif</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.jpg</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.png</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.ico</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.js.ats</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.css.ats</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>cacheExpirationFilter</filter-name>
        <url-pattern>*.ecss.ats</url-pattern>
    </filter-mapping>

    <!-- Filtro de compactação de páginas -->   
    <filter-mapping>
        <filter-name>gzipFilter</filter-name>
        <url-pattern>*.ats</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>gzipFilter</filter-name>
        <url-pattern>*.css</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>gzipFilter</filter-name>
        <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>gzipFilter</filter-name>
        <url-pattern>*.dwr</url-pattern>
    </filter-mapping>

    <!-- Extensions Filter -->
    <filter-mapping>
        <filter-name>extensionsFilter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>extensionsFilter</filter-name>
        <url-pattern>*.ats</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>extensionsFilter</filter-name>
        <url-pattern>/faces/*</url-pattern>
    </filter-mapping>

    <!-- Filtro OSIVF do Hibernate -->
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>*.ats</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/dwr/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/cxf/*</url-pattern>
    </filter-mapping>   
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/cotacao/*</url-pattern>
    </filter-mapping>   

    <!-- Ajax DWR -->
    <filter-mapping>
        <filter-name>DwrFacesFilter</filter-name>
        <url-pattern>/dwr/*</url-pattern>
    </filter-mapping>

    <!-- Cotacao de preços -->
    <filter-mapping>
        <filter-name>cotacaoFilter</filter-name>
        <url-pattern>/cotacao/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>liberacaoPDVFilter</filter-name>
        <url-pattern>/liberacaoRemotaPDV/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>com.ats.framework.view.listener.Log4jNomeAplicacaoContextListener</listener-class>
    </listener>     

    <listener>
        <listener-class>com.ats.framework.faces.listener.Jul2Slf4jListener</listener-class>
    </listener>  

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>  

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <listener>
        <listener-class>com.ats.framework.view.servlet.ContagemUsuariosSessionListener</listener-class>
    </listener>

    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Servidor de imagens -->
    <servlet>
        <servlet-name>Servlet Imagens</servlet-name>
        <servlet-class>com.ats.framework.view.image.impl.ImageServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Lookup Ajax -->
    <servlet>
        <servlet-name>Ajax Lookup Servlet</servlet-name>
        <servlet-class>com.ats.framework.view.lookup.AjaxLookupServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- DWR - Ajax -->
    <servlet>
        <display-name>DWR Servlet</display-name>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>com.ats.framework.faces.dwr.AtsDwrServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>crossDomainSessionSecurity</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>

    <!-- CXF Servlet -->
    <servlet>
        <display-name>CXF Servlet</display-name>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- extension mapping -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.ats</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping> 

    <!-- Servlet de Imagens -->
    <servlet-mapping>
        <servlet-name>Servlet Imagens</servlet-name>
        <url-pattern>/imagens/*</url-pattern>
    </servlet-mapping>

    <!-- Lookup Ajax -->
    <servlet-mapping>
        <servlet-name>Ajax Lookup Servlet</servlet-name>
        <url-pattern>/lookup/*</url-pattern>
    </servlet-mapping>

    <!-- CXF Servlet -->
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/cxf/*</url-pattern>
    </servlet-mapping>

    <!-- Welcome files -->
    <welcome-file-list>
        <welcome-file>login.ats</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <security-constraint>
        <display-name>Restrict XHTML Documents</display-name>
        <web-resource-collection>
            <web-resource-name>XHTML</web-resource-name>
            <url-pattern>*.xhtml</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description>
                Only Let 'developer's access XHTML pages
            </description>
            <role-name>developer</role-name>
        </auth-constraint>
    </security-constraint>

    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>

    <mime-mapping>
        <extension>ico</extension>
        <mime-type>image/x-icon</mime-type>
    </mime-mapping> 
</web-app>

I've searched Google for the exact error message, and it simply finds nothing. Does anyone have any idea of what could be going wrong?

Is there any way of knowing which Servlet is causing the alleged conflict?

Haroldo_OK
  • 6,612
  • 3
  • 43
  • 80

1 Answers1

1

In general a web application will consist of several servlets, some of them will be defined in web.xml (yours servlet) and other will be created automatically. When looking at list of deployed servlets, for most faces application you will see "Faces Servlet", "JSP", "default" plus one servlet per webservice. Your problem could be caused by many faces jars are in the application classpath, i.e glassfish trying to deploy several Faces servlets. Alternatively, if your application has a web-services, make sure that you don't use same class name for webservices in different packages. I found that glassfish handles servlet names different for ear and war deployments. When deploying ear file, GF will try to avoid duplicity in servlet names by using class canonical name as a servlet name (org.bla.web.WebService), but for the war deployments, it uses simple class name which can cause problems you are facing.

Mikhail Chibel
  • 1,865
  • 1
  • 22
  • 34