10 Replies Latest reply on Apr 10, 2014 8:58 AM by sanjmand

    JBAS011053: Incompatible conflicting binding

    chrisbitmead

      I've got a very very basic Java EE app that I'm moving from Jboss eap6.2 to wildly 8.0.0. I made basic changes to my standalone.xml to add Derby drivers and add my datasource. I installed my war file and I'm getting this error, which doesn't make a lot of sense to me....

       

      My app makes use of datasource java:/jdbc/HouseDS

      16:56:40,894 INFO  [org.hibernate.validator.internal.util.Version] (MSC service thread 1-12) HV000001: Hibernate Validator 5.0.3.Final

      16:56:41,036 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-14) MSC000001: Failed to start service jboss.deployment.unit."house-1.0.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."house-1.0.war".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "house-1.0.war"

        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]

        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]

        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0]

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0]

        at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0]

      Caused by: java.lang.IllegalArgumentException: JBAS011053: Incompatible conflicting binding at java:/jdbc/HouseDS source: lookup (java:comp/DefaultDataSource)

        at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:243)

        at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:108)

        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]

        ... 5 more

       

      16:56:41,043 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "house-1.0.war")]) - failure description: {

          "JBAS014671: Failed services" => {"jboss.deployment.unit.\"house-1.0.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"house-1.0.war\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"house-1.0.war\"

          Caused by: java.lang.IllegalArgumentException: JBAS011053: Incompatible conflicting binding at java:/jdbc/HouseDS source: lookup (java:comp/DefaultDataSource)"},

          "JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"house-1.0.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"house-1.0.war\".beanmanager]"]

      }

      16:56:41,083 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "house-1.0.war" (runtime-name : "house-1.0.war")

      16:56:41,083 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report

      JBAS014775:    New missing/unsatisfied dependencies:

            service jboss.deployment.unit."house-1.0.war".beanmanager (missing) dependents: [service jboss.deployment.unit."house-1.0.war".weld.weldClassIntrospector]

      JBAS014777:   Services which failed to start:      service jboss.deployment.unit."house-1.0.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."house-1.0.war".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "house-1.0.war"

       

      This is my standalone.xml

       

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

       

       

      <server xmlns="urn:jboss:domain:2.0">

       

       

          <extensions>

              <extension module="org.jboss.as.clustering.infinispan"/>

              <extension module="org.jboss.as.connector"/>

              <extension module="org.jboss.as.deployment-scanner"/>

              <extension module="org.jboss.as.ee"/>

              <extension module="org.jboss.as.ejb3"/>

              <extension module="org.jboss.as.jaxrs"/>

              <extension module="org.jboss.as.jdr"/>

              <extension module="org.jboss.as.jmx"/>

              <extension module="org.jboss.as.jpa"/>

              <extension module="org.jboss.as.jsf"/>

              <extension module="org.jboss.as.logging"/>

              <extension module="org.jboss.as.mail"/>

              <extension module="org.jboss.as.naming"/>

              <extension module="org.jboss.as.pojo"/>

              <extension module="org.jboss.as.remoting"/>

              <extension module="org.jboss.as.sar"/>

              <extension module="org.jboss.as.security"/>

              <extension module="org.jboss.as.threads"/>

              <extension module="org.jboss.as.transactions"/>

              <extension module="org.jboss.as.webservices"/>

              <extension module="org.jboss.as.weld"/>

              <extension module="org.wildfly.extension.batch"/>

              <extension module="org.wildfly.extension.io"/>

              <extension module="org.wildfly.extension.undertow"/>

          </extensions>

       

       

       

       

          <management>

              <security-realms>

                  <security-realm name="ManagementRealm">

                      <authentication>

                          <local default-user="$local"/>

                          <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>

                      </authentication>

                      <authorization map-groups-to-roles="false">

                          <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>

                      </authorization>

                  </security-realm>

                  <security-realm name="ApplicationRealm">

                      <authentication>

                          <local default-user="$local" allowed-users="*"/>

                          <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>

                      </authentication>

                      <authorization>

                          <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>

                      </authorization>

                  </security-realm>

              </security-realms>

              <audit-log>

                  <formatters>

                      <json-formatter name="json-formatter"/>

                  </formatters>

                  <handlers>

                      <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>

                  </handlers>

                  <logger log-boot="true" log-read-only="false" enabled="false">

                      <handlers>

                          <handler name="file"/>

                      </handlers>

                  </logger>

              </audit-log>

              <management-interfaces>

                  <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">

                      <socket-binding http="management-http"/>

                  </http-interface>

              </management-interfaces>

              <access-control provider="simple">

                  <role-mapping>

                      <role name="SuperUser">

                          <include>

                              <user name="$local"/>

                          </include>

                      </role>

                  </role-mapping>

              </access-control>

          </management>

       

       

          <profile>

              <subsystem xmlns="urn:jboss:domain:logging:2.0">

                  <console-handler name="CONSOLE">

                      <level name="INFO"/>

                      <formatter>

                          <named-formatter name="COLOR-PATTERN"/>

                      </formatter>

                  </console-handler>

                  <periodic-rotating-file-handler name="FILE" autoflush="true">

                      <formatter>

                          <named-formatter name="PATTERN"/>

                      </formatter>

                      <file relative-to="jboss.server.log.dir" path="server.log"/>

                      <suffix value=".yyyy-MM-dd"/>

                      <append value="true"/>

                  </periodic-rotating-file-handler>

                  <logger category="com.arjuna">

                      <level name="WARN"/>

                  </logger>

                  <logger category="org.apache.tomcat.util.modeler">

                      <level name="WARN"/>

                  </logger>

                  <logger category="org.jboss.as.config">

                      <level name="DEBUG"/>

                  </logger>

                  <logger category="sun.rmi">

                      <level name="WARN"/>

                  </logger>

                  <logger category="jacorb">

                      <level name="WARN"/>

                  </logger>

                  <logger category="jacorb.config">

                      <level name="ERROR"/>

                  </logger>

                  <root-logger>

                      <level name="INFO"/>

                      <handlers>

                          <handler name="CONSOLE"/>

                          <handler name="FILE"/>

                      </handlers>

                  </root-logger>

                  <formatter name="PATTERN">

                      <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

                  </formatter>

                  <formatter name="COLOR-PATTERN">

                      <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>

                  </formatter>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:batch:1.0">

                  <job-repository>

                      <in-memory/>

                  </job-repository>

                  <thread-pool>

                      <max-threads count="10"/>

                      <keepalive-time time="100" unit="milliseconds"/>

                  </thread-pool>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:datasources:2.0">

                  <datasources>

                      <datasource jta="true" jndi-name="java:/jdbc/HouseDS" pool-name="HouseDS" enabled="true" use-java-context="true" use-ccm="true">

                          <connection-url>jdbc:derby://localhost//MoreApplications/derby-instances/derby-house</connection-url>

                          <driver>org.apache.derby.client</driver>

                          <security>

                              <user-name>app</user-name>

                              <password>app</password>

                          </security>

                      </datasource>

                      <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">

                          <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>

                          <driver>h2</driver>

                          <security>

                              <user-name>sa</user-name>

                              <password>sa</password>

                          </security>

                      </datasource>

                      <drivers>

                          <driver name="org.apache.derby.client" module="org.apache.derby.client">

                              <driver-class>org.apache.derby.jdbc.ClientDriver</driver-class>

                              <xa-datasource-class>org.apache.derby.jdbc.ClientXADataSource</xa-datasource-class>

                          </driver>

                          <driver name="h2" module="com.h2database.h2">

                              <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

                          </driver>

                      </drivers>

                  </datasources>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">

                  <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:ee:2.0">

                  <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>

                  <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>

                  <annotation-property-replacement>false</annotation-property-replacement>

                  <concurrent>

                      <context-services>

                          <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>

                      </context-services>

                      <managed-thread-factories>

                          <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>

                      </managed-thread-factories>

                      <managed-executor-services>

                          <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/>

                      </managed-executor-services>

                      <managed-scheduled-executor-services>

                          <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/>

                      </managed-scheduled-executor-services>

                  </concurrent>

                  <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:ejb3:2.0">

                  <session-bean>

                      <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>

                      <singleton default-access-timeout="5000"/>

                  </session-bean>

                  <pools>

                      <bean-instance-pools>

                          <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                          <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                      </bean-instance-pools>

                  </pools>

                  <caches>

                      <cache name="simple"/>

                      <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>

                  </caches>

                  <passivation-stores>

                      <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>

                  </passivation-stores>

                  <async thread-pool-name="default"/>

                  <timer-service thread-pool-name="default" default-data-store="default-file-store">

                      <data-stores>

                          <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>

                      </data-stores>

                  </timer-service>

                  <remote connector-ref="http-remoting-connector" thread-pool-name="default"/>

                  <thread-pools>

                      <thread-pool name="default">

                          <max-threads count="10"/>

                          <keepalive-time time="100" unit="milliseconds"/>

                      </thread-pool>

                  </thread-pools>

                  <default-security-domain value="other"/>

                  <default-missing-method-permissions-deny-access value="true"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:io:1.0">

                  <worker name="default" io-threads="3"/>

                  <buffer-pool name="default" buffer-size="16384" buffers-per-slice="128"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:infinispan:2.0">

                  <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">

                      <local-cache name="passivation" batching="true">

                          <file-store passivation="true" purge="false"/>

                      </local-cache>

                      <local-cache name="persistent" batching="true">

                          <file-store passivation="false" purge="false"/>

                      </local-cache>

                  </cache-container>

                  <cache-container name="ejb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan" aliases="sfsb">

                      <local-cache name="passivation" batching="true">

                          <file-store passivation="true" purge="false"/>

                      </local-cache>

                      <local-cache name="persistent" batching="true">

                          <file-store passivation="false" purge="false"/>

                      </local-cache>

                  </cache-container>

                  <cache-container name="hibernate" default-cache="local-query" module="org.hibernate">

                      <local-cache name="entity">

                          <transaction mode="NON_XA"/>

                          <eviction strategy="LRU" max-entries="10000"/>

                          <expiration max-idle="100000"/>

                      </local-cache>

                      <local-cache name="local-query">

                          <transaction mode="NONE"/>

                          <eviction strategy="LRU" max-entries="10000"/>

                          <expiration max-idle="100000"/>

                      </local-cache>

                      <local-cache name="timestamps">

                          <transaction mode="NONE"/>

                          <eviction strategy="NONE"/>

                      </local-cache>

                  </cache-container>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>

              <subsystem xmlns="urn:jboss:domain:jca:2.0">

                  <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>

                  <bean-validation enabled="true"/>

                  <default-workmanager>

                      <short-running-threads>

                          <core-threads count="50"/>

                          <queue-length count="50"/>

                          <max-threads count="50"/>

                          <keepalive-time time="10" unit="seconds"/>

                      </short-running-threads>

                      <long-running-threads>

                          <core-threads count="50"/>

                          <queue-length count="50"/>

                          <max-threads count="50"/>

                          <keepalive-time time="10" unit="seconds"/>

                      </long-running-threads>

                  </default-workmanager>

                  <cached-connection-manager/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>

              <subsystem xmlns="urn:jboss:domain:jmx:1.3">

                  <expose-resolved-model/>

                  <expose-expression-model/>

                  <remoting-connector/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:jpa:1.1">

                  <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:jsf:1.0"/>

              <subsystem xmlns="urn:jboss:domain:mail:2.0">

                  <mail-session name="default" jndi-name="java:jboss/mail/Default">

                      <smtp-server outbound-socket-binding-ref="mail-smtp"/>

                  </mail-session>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:naming:2.0">

                  <remote-naming/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>

              <subsystem xmlns="urn:jboss:domain:remoting:2.0">

                  <endpoint worker="default"/>

                  <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0"/>

              <subsystem xmlns="urn:jboss:domain:sar:1.0"/>

              <subsystem xmlns="urn:jboss:domain:security:1.2">

                  <security-domains>

                      <security-domain name="house-security" cache-type="default">

                          <authentication>

                              <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">

                                  <module-option name="unauthenticatedIdentity" value="guest"/>

                                  <module-option name="dsJndiName" value="java:/jdbc/HouseDS"/>

                                  <module-option name="principalsQuery" value="SELECT PASSWORD FROM USERS WHERE USER_ID=?"/>

                                  <module-option name="rolesQuery" value="SELECT ROLE_ID, 'Roles' FROM ROLES WHERE USER_ID=?"/>

                              </login-module>

                          </authentication>

                      </security-domain>

                      <security-domain name="other" cache-type="default">

                          <authentication>

                              <login-module code="Remoting" flag="optional">

                                  <module-option name="password-stacking" value="useFirstPass"/>

                              </login-module>

                              <login-module code="RealmDirect" flag="required">

                                  <module-option name="password-stacking" value="useFirstPass"/>

                              </login-module>

                          </authentication>

                      </security-domain>

                      <security-domain name="jboss-web-policy" cache-type="default">

                          <authorization>

                              <policy-module code="Delegating" flag="required"/>

                          </authorization>

                      </security-domain>

                      <security-domain name="jboss-ejb-policy" cache-type="default">

                          <authorization>

                              <policy-module code="Delegating" flag="required"/>

                          </authorization>

                      </security-domain>

                  </security-domains>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:threads:1.1"/>

              <subsystem xmlns="urn:jboss:domain:transactions:2.0">

                  <core-environment>

                      <process-id>

                          <uuid/>

                      </process-id>

                  </core-environment>

                  <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>

                  <coordinator-environment default-timeout="300"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:undertow:1.0">

                  <buffer-caches>

                      <buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10"/>

                  </buffer-caches>

                  <server name="default-server">

                      <http-listener name="default" socket-binding="http"/>

                      <host name="default-host" alias="localhost">

                          <location name="/" handler="welcome-content"/>

                          <filter-ref name="server-header"/>

                          <filter-ref name="x-powered-by-header"/>

                      </host>

                  </server>

                  <servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">

                      <jsp-config/>

                  </servlet-container>

                  <handlers>

                      <file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true"/>

                  </handlers>

                  <filters>

                      <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/>

                      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/>

                  </filters>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:webservices:1.2">

                  <modify-wsdl-address>true</modify-wsdl-address>

                  <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>

                  <endpoint-config name="Standard-Endpoint-Config"/>

                  <endpoint-config name="Recording-Endpoint-Config">

                      <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">

                          <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>

                      </pre-handler-chain>

                  </endpoint-config>

                  <client-config name="Standard-Client-Config"/>

              </subsystem>

              <subsystem xmlns="urn:jboss:domain:weld:2.0"/>

          </profile>

       

       

          <interfaces>

              <interface name="management">

                  <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

              </interface>

              <interface name="public">

                  <inet-address value="${jboss.bind.address:127.0.0.1}"/>

              </interface>

              <interface name="unsecure">

                  <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>

              </interface>

          </interfaces>

       

       

          <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

              <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>

              <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>

              <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>

              <socket-binding name="http" port="${jboss.http.port:8080}"/>

              <socket-binding name="https" port="${jboss.https.port:8443}"/>

              <socket-binding name="txn-recovery-environment" port="4712"/>

              <socket-binding name="txn-status-manager" port="4713"/>

              <outbound-socket-binding name="mail-smtp">

                  <remote-destination host="localhost" port="25"/>

              </outbound-socket-binding>

          </socket-binding-group>

       

       

      </server>

        • 1. Re: JBAS011053: Incompatible conflicting binding
          emmartins

          Please share the code how your app retrieves the datasource (<resource-ref/> and/or @Resource injection).

          • 2. Re: Re: JBAS011053: Incompatible conflicting binding
            chrisbitmead

            Well, I've got hibernate:

             

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

            <!DOCTYPE hibernate-configuration PUBLIC

                    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

                    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

            <hibernate-configuration>

                <session-factory name="SessionFactory">

                    <!-- Using Datasource -->

                    <property name="hibernate.connection.datasource">java:/jdbc/HouseDS</property>

                    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>

                    <property name="show_sql">true</property>

                    <!--  Direct Access

                    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>

                     <property name="hibernate.connection.password">password</property>

                    <property name="hibernate.connection.url">jdbc:postgresql:dbname</property>

                    <property name="hibernate.connection.username">user</property>

                    -->

                    <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>

                    <property name="current_session_context_class">thread</property>

              <mapping resource="house/datamodel/Event.hbm.xml"/>

              <mapping resource="house/datamodel/Flatmate.hbm.xml"/>

              <mapping resource="house/datamodel/Job.hbm.xml"/>

              <mapping resource="house/datamodel/RentDate.hbm.xml"/>

              <mapping resource="house/datamodel/RentPaid.hbm.xml"/>

              <mapping resource="house/datamodel/Request.hbm.xml"/>

              <mapping resource="house/datamodel/Role.hbm.xml"/>

              <mapping resource="house/datamodel/User.hbm.xml"/>

                </session-factory>

            </hibernate-configuration>

             

            I have this in my web.xml:

             

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

            <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                xmlns="http://java.sun.com/xml/ns/javaee"

                xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                id="WebApp_ID" version="2.5">

              <resource-ref>

                  <description>HOUSE DS</description>

                  <res-ref-name>java:/jdbc/HouseDS</res-ref-name>

                  <res-type>javax.sql.DataSource</res-type>

                  <res-auth>Container</res-auth>

              </resource-ref>

             

            I've got some servlets where I do this:

             

             

            Connection connection = null;

            try {

            javax.naming.Context context = new javax.naming.InitialContext();

            Object ref = context.lookup("java:/jdbc/HouseDS");

            DataSource datasource = (DataSource)ref;

            connection = datasource.getConnection();

             

            And that's it, that's the total cases where my war refers to datasources.

            • 3. Re: Re: Re: JBAS011053: Incompatible conflicting binding
              emmartins

              Chris Bitmead wrote:

               

              I have this in my web.xml:

               

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

              <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                  xmlns="http://java.sun.com/xml/ns/javaee"

                  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                  id="WebApp_ID" version="2.5">

                <resource-ref>

                    <description>HOUSE DS</description>

                    <res-ref-name>java:/jdbc/HouseDS</res-ref-name>

                    <res-type>javax.sql.DataSource</res-type>

                    <res-auth>Container</res-auth>

                </resource-ref>

               

               

               

              That is not correct, the <resource-ref/> creates a new jndi entry, and res-ref-name defines the target name. In short you're trying to bind the default datasource (since you do not provide the <lookup-name/>) at java:/jdbc/HouseDS, which obviously fails.

               

              The typical usage of <resource-ref/> would be:

               

              <resource-ref>
                    <description>HOUSE DS</description>
                    <res-ref-name>jdbc/HouseDS</res-ref-name>
                    <res-type>javax.sql.DataSource</res-type>
                    <lookup-name>java:/jdbc/HouseDS</lookup-name>
                </resource-ref>
              

               

              Which will bind the datasource in your jndi env (java:comp/env). Then in your code:

               

              DataSource datasource = InitialContext.doLookup("java:comp/env/jdbc/HouseDS");
              


              Anyway you could replace both using @Resource injection, for instance through a field:


              @Resource(lookup="java:/jdbc/HouseDS")
              private DataSource datasource;
              
              1 of 1 people found this helpful
              • 4. Re: Re: Re: JBAS011053: Incompatible conflicting binding
                emmartins

                Also, I recommend you to use a java:global jndi name for the datasource, since this is a standard namespace, thus supported by every java ee 7 container.

                • 5. Re: Re: Re: JBAS011053: Incompatible conflicting binding
                  chrisbitmead

                  Thanks for the help guys.

                   

                  I don't know why I remain ignorant about the whole namespaces thing, but every time I google search or read doco about namespaces, it seems like a mass of confusion. I've always torn out may hair why sometimes you refer to jdbc/xxxDS, sometimes java:/jdbc/xxxDS, sometimes java:comp/env/jdbc/xxxDS, now you're saying to use java:global. If you can indulge my ignorance, what exactly do I put and where?

                  • 6. Re: Re: Re: Re: JBAS011053: Incompatible conflicting binding
                    chrisbitmead

                    Hmm, eclipse won't even accept your suggested resource-ref

                     

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

                    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                        xmlns="http://java.sun.com/xml/ns/javaee"

                        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                        id="WebApp_ID" version="2.5">

                      <resource-ref> 

                          <description>HOUSE DS</description> 

                          <res-ref-name>jdbc/HouseDS</res-ref-name> 

                          <res-type>javax.sql.DataSource</res-type> 

                          <lookup-name>java:/jdbc/HouseDS</lookup-name> 

                      </resource-ref>

                     

                    Description Resource Path Location Type
                    cvc-complex-type.2.4.a: Invalid content was found starting with element 'lookup-name'. One of '{"http://java.sun.com/xml/ns/javaee":res-auth, "http://java.sun.com/xml/ns/javaee":res-sharing-scope, "http://java.sun.com/xml/ns/javaee":mapped-name, "http://java.sun.com/xml/ns/javaee":injection-target}' is expected. web.xml /house/WebContent/WEB-INF line 17 XML Problem
                    • 7. Re: Re: Re: JBAS011053: Incompatible conflicting binding
                      emmartins

                      1) Change your jndi-name attribute in the datasource configuration to java:global/jdbc/HouseDS,  update the Hibernate XML with the new name. The reason behind this is that java:global is a standard namespace, it exists in every Java EE 6/7 app server, so by using java:global you won't have to change again the names in your app code and xml, you just need to config the datasource.

                       

                      2) Remove the <resource-ref/> from your web.xml, you will replace it by @Resource injection.

                       

                      3) Add the following field into every Servlet that needs the datasource:

                       

                      @Resource(lookup="java:global/jdbc/HouseDS")

                      private DataSource datasource;

                       

                      The Java EE app server will inject the field with the datasource present in java:global/jdbc/HouseDS, the one which you configured, no need to use JNDI lookups (which btw would work fine).

                       

                      4) Let me try to remove your mass confusion, <resource-ref/> creates a bind in JNDI, and that bind name is defined by <res-ref-name/> . In case you specify a non absolute name, as I did in my code example then Java EE considers that such name is relative to java:comp/env, thus the app code lookup targeting java:comp/env/jdbc/HouseDS.


                      Now what is the value of such bind? That's defined by the <lookup-name />, in case you don't specify then the Java EE app server will provide a default instance, and wrt WildFly such default instance is the default datasource required by the specification, which may be found at java:comp/DefaultDatasource. Your resource-ref didnt have a lookup so WildFly set the bind source value as the default datasource, and the bind target name you provided through res-ref-name was java:/jdbc/HouseDS so what WildFly tried was to bind the default datasource into java:/jdbc/HouseDS, but that bind already existed...

                       

                      @Resource is quite similar to <resource-ref/>, the "name" attribute is the <res-ref-name/>, and "lookup" is the <lookup-name/>. Note that unlike <resource-ref/>, @Resource "name" attribute is optional, if not provided the Java EE app server will use, when targeting a field, the name  java:comp/env/ + fully qualified name of the field's class + / + field's name, so in the code above @Resource binds the datasource found in java:global/jdbc/HouseDS, into java:comp/env/javax.sql.DataSource/datasource, and then inject it in the field.

                       

                      There you go, all you ever need to know about EE resources in 3 short paragraphs! Not really, but if you want to learn all about it check Chapter 5 of Java EE 7 specification.

                      • 8. Re: Re: Re: JBAS011053: Incompatible conflicting binding
                        emmartins

                        Such error is probably due to your web.xml 2.5 version, but if you follow my advice there will be no more <resource-ref/>. Anyway I recommend you to upgrade to the 3.1, beware that the xml namespace changed too.

                        • 9. Re: Re: Re: JBAS011053: Incompatible conflicting binding
                          dmlloyd

                          Chris Bitmead wrote:

                           

                          Hmm, eclipse won't even accept your suggested resource-ref

                           

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

                          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                              xmlns="http://java.sun.com/xml/ns/javaee"

                              xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                              id="WebApp_ID" version="2.5">

                            <resource-ref> 

                                <description>HOUSE DS</description> 

                                <res-ref-name>jdbc/HouseDS</res-ref-name> 

                                <res-type>javax.sql.DataSource</res-type>

                                <lookup-name>java:/jdbc/HouseDS</lookup-name>

                            </resource-ref>

                           

                           

                           

                          This XML isn't right at all.  The schemaLocation is given for the xsi prefix (which isn't actually used in the document), but the actual location given is for the web prefix (which is also not used).  I'm not sure if that has anything to do with the failure but it might be a good idea to fix that first.

                          • 10. Re: Re: Re: Re: JBAS011053: Incompatible conflicting binding
                            sanjmand

                            Hi All,

                            I have the similar problem and i am getting error message "Could not resolve resource-env-ref java:comp/env/fec/StaffwareProcessSuite"  in jboss eap 6.0.1 console. My ejb class containing following entry.

                            /*   

                            * @ejb.resource-ref

                            *    res-ref-name="fec/StaffwareProcessSuite"

                            *    res-type="com.tiscon.bpm.connector.BPMConnectionFactory"

                            *    res-auth="Container"

                            *    res-sharing-scope="Shareable"

                            *  

                            *

                            *

                            * @jboss.resource-ref

                            *    res-ref-name="fec/StaffwareProcessSuite"

                            *    resource-name="fec/StaffwareProcessSuite"  

                            *   

                            *

                            */

                            and the lookup code is:

                            connectionFactory = (BPMConnectionFactory) context.lookup("java:comp/env/fec/StaffwareProcessSuite");

                            I am using ejb2.0 and i do not have xdoclet option to put lookup tag in the ejb-jar.xml file.

                            Do you have any idea how will i add lookup tag or solve the above problem.

                            Regards

                            Sanjeev Kumar