6 Replies Latest reply on Apr 27, 2015 10:08 AM by ppgandhi11

    ear deployment fails with JBAS014771: Services with missing/unavailable dependencies

    ppgandhi11

      Hi, I am unable to deploy the ear file. I do not have any databases involved.

       

      I have following entry in my standalone.xml

      :

      :

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

      <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>

      <outbound-connections>

      <remote-outbound-connection name="dayrhehdsd001" outbound-socket-binding-ref="remote-ejb-dayrhehdsd001" username="ejb" security-realm="ejb-security-realm">

      <properties>

      <property name="SASL_POLICY_NOANONYMOUS" value="false"/>

      <property name="SSL_ENABLED" value="false"/>

      </properties>

      </remote-outbound-connection>

      :

      :

      <outbound-socket-binding name="remote-ejb-dayrhehdsd001">

      <remote-destination host="10.7.79.183" port="4447"/>

      </outbound-socket-binding>

       

      In my jboss-ejb-client.xml file, i have:

      <jboss-ejb-client xmlns="urn:jboss:ejb-client:1.0">

      <client-context>

      <ejb-receivers>

      <remoting-ejb-receiver outbound-connection-ref="dayrhehdsd001"/>

      </ejb-receivers>

      </client-context>

      </jboss-ejb-client>

       

      __

       

      Interestingly, if i remove this dayrhehdsd001, with a legitimate server name (e.g. nalnxapp154), it works. Also, it works with few additional servers when the entries same as above is added. My goal is to add a new server to the list (dayrhehdsd001). currently the dtu.ear gets deployed successfully with the nalnxapp154, but as soon as I add the entry for additional server in jboss-ejb-client.xml and the standalone.xml for new server, the dtu.ear fails with the error.

       

      What am I missing? are the working server names coming from some other place where I need to adjust the entry for the new server I want to add? I scanned through entire source code and covered all the places for the new server name, still it fails during ear deployment.

       

      below is the failure message. dayrhehdsd001 is my server name.

       

      {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014771: Services with missing/unavailable dependencies" => [

      "jboss.naming.context.java.comp.dtu.dtu.LoginServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.LoginServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.JobConfigSessionBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.JobConfigSessionBean]",

      "jboss.naming.context.java.comp.dtu.dtu.UserProfileSessionBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.UserProfileSessionBean]",

      "jboss.naming.context.java.comp.dtu.dtu.LoginServiceBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.LoginServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.JobServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.JobServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.FileServiceBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.FileServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.JobServiceBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.JobServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.ValidationServiceBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.ValidationServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.FileLayoutSessionBean.Validator is missing [jboss.naming.context.java.comp.dtu.dtu.FileLayoutSessionBean]",

      "jboss.ejb3.dd-based-ejb-client-context.\"dtu.ear\" is missing [jboss.remoting.endpoint.subsystem.outbound-connection.dayrhehdsd001]",

      "jboss.naming.context.java.comp.dtu.dtu.ValidationServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.ValidationServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.FileServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.FileServiceBean]",

      "jboss.naming.context.java.comp.dtu.dtu.UserProfileSessionBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.UserProfileSessionBean]",

      "jboss.naming.context.java.comp.dtu.dtu.FileLayoutSessionBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.FileLayoutSessionBean]",

      "jboss.naming.context.java.comp.dtu.dtu.JobConfigSessionBean.ValidatorFactory is missing [jboss.naming.context.java.comp.dtu.dtu.JobConfigSessionBean]"

      ]}}}

       

      both the servers nalnxapp154 and dayrhehdsd001 seems to have similar jboss setup. The dtu.ear gets deployed on a different Front End server.

      Any help is greatly appreciated. Thanks. Prashant-

        • 1. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
          wdfink

          From this point it is not clear what is missing.

          The configuration names of outbound connections are independant from real server names.

          Did you configure the ejb-security-realm correct?

           

          Maybe my quickstart ejb-multi-server is helpful to show the different configurations.

          • 2. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
            ppgandhi11

            Thanks Fink.

             

            IP address for dayrhehdsd001 server is right. The port is open. The security at both working server (nalnxapp154, nalnxapp110 etc.) as well as at non working server (dayrhehdsd001) for JBOSS is setup identical. The jboss installation on dayrhehdsd001 is 1 directory up complared to nalnxapp154/110 but that should not be a problem. Security on the FE server where .ear file gets deployed should be working fine only because .ear gets deployed for few servers successfully.

             

            I understand the comment that the connection name can be anything ; independent of the server name. I could have put "abc" there as long as i have used it same at both jboss-ejb-client.xml + standalone.xml ; so long as IP and port are right.

             

            So you dont see anything done obviously wrong, do you?

             

            I am confused with your question regarding ejb-security-realm. On the FE server where dtu.ear gets deployed it, the setup must be shared among working and non working servers. So there is nothing I see needing to be done there. Are you talking about the security setup on those remote servers (e.g. nalnxapp154, 110, dayrhehdsd001)?

             

            We have followed the website: EJB invocations from a remote server instance - JBoss AS 7.2 - Project Documentation Editor , if this is what you are referring to as a quick start in configuring all the servers.

             

            A little background: The way it works in our system is: a few .jars gets deployed on those remote servers, .ear gets deployed on the FE server and the via URL with FE server IP, we connect to those back end servers since the resource dtu would become available upon successful .ear deployment. In this case, the .jars can be deployed successfully on all the remote servers successfully. We get the dtu-unix.jar.deployed generated for all of them. its the dtu.ear that fails with certain servers, making the dtu resource un available.

             

            Also, where would I find your quickstart? I am familiar with JBOSS but not an everyday developer with it.

             

            Again your help is greatly appreciated. Thanks mate.

            • 3. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
              wdfink

              You need to have a security definition for the client server, the password need to be set within the security configuration, see EJB invocations from a remote server instance for more details.

              The quickstart can be found here : jboss-developer/jboss-eap-quickstarts

              These QS should work for AS7.

              • 4. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
                ppgandhi11

                Thanks Fink, I have gone through that article. I made the working server non working now.

                 

                nalnxapp154 is a working server ONLY when I have the name listed exactly as below:

                 

                jboss-ejb-client.xml:

                <jboss-ejb-client xmlns="urn:jboss:ejb-client:1.0">

                <client-context>

                <ejb-receivers>

                <remoting-ejb-receiver outbound-connection-ref="nalnxapp154"/>

                </ejb-receivers>

                </client-context>

                </jboss-ejb-client>


                standalone.xml:

                <remote-outbound-connection name="nalnxapp154" outbound-socket-binding-ref="remote-ejb-nalnxapp154" username="ejb" security-realm="ejb-security-realm">

                <properties>

                <property name="SASL_POLICY_NOANONYMOUS" value="false"/>

                <property name="SSL_ENABLED" value="false"/>

                </properties>

                </remote-outbound-connection>

                :

                :

                <outbound-socket-binding name="remote-ejb-nalnxapp154">

                <remote-destination host="10.9.40.11" port="4447"/>

                </outbound-socket-binding>



                Question: why so? I always thought that I could have put "abc" in the jboss-ejb-client and it would be perfectly alright as long as I have it referenced as "abc" in the standalone.xml as name for remote-outbound-connection !!


                As per the article you sent, the name can be anything as long as it is consistent between the jboss-ejb-client.xml + standalone.xml. In my case it works if it is exactly nalnxapp154, and does not work if it is anything else! Where is it getting so tightly coupled? I dont see in the source folder anywhere I am doing this coupling!


                I think this is the piece that is causing problems for me for adding new server entries. If I get handle on making it work with abc for working server, adding new server would follow same suite.


                Can you please help further? Thanks a lot Fink!

                • 5. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
                  wdfink

                  I don't get what's wrong

                   

                  Are you able to run the quickstart?

                  do you have a simple reproducer project which you can attach to show the problem?

                  • 6. Re: ear deployment fails with JBAS014771: Services with missing/unavailable dependencies
                    ppgandhi11

                    I am not familiar with running quickstart nor i have a reproducer project. I can send you the complete standalone.xml, build.xml and jboss-ejb-client.xml (and any additional files you may feel helpful). Please let me know.

                     

                    Is my basic understanding correct? It seems mind boggling to me, that .ear deploys as expected when the server name is used (nalnxapp154) in the jboss-ejb-client.xml + standalone.xml ; but the .ear deployment fails when the server name is replaced with something else like "abc" consistent in jboss-ejb-client.xml + standalone.xml   --> everything else being constant and with unchanged IP addresses.

                     

                    I can think of only 1 thing from all these. dtu.ear deployment is tightly coupled and dependent on working only with predefined server names, and because the new server that i want to add is not in there, it fails to recognize that during deployment. it treats it as a foreign entry and fails. If this theory is correct, then I do not know where that setting is.

                     

                    it is worth a mention, that the dtu-unix.jar gets deployed successfully on both nalnxapp154 and dayrhehdsd001 (which has bean deployment on that remote server). Basically the app needs to connect with nalnxapp154 / dayrhehdsd001 etc. using the userid/passwd on those servers.

                     

                    Thanks again.