11 Replies Latest reply: Jun 28, 2012 3:56 AM by RobertMetcalf RSS

    EndpointConfigurator is breaking my composites

    RobertMetcalf
      Hi,
      I have run into a problem with Deploying my compisites via a deployment plan.
      Due to our cluster setup we need to have diffrent server url's to deploy to then the composites need to refer to each other.
      We need to deploy to devsoainternal.ad.ic.ac.uk:80
      Composites need to refer to devsoa.imperial.ac.uk:443

      We achieved on 11.1.1.2 this by putting the following into AIAInstallProperties:
      <pips>
      <IC_Global>
      <version>11.1.1.5.0</version>
      <server>
      <soaserverhostname>devsoa.imperial.ac.uk</soaserverhostname>
      <soaserverport>443</soaserverport>
      </server>
      </IC_Global>
      <IC_Deploy>
      <version>11.1.1.5.0</version>
      <server>
      <soaserverhostname>devsoainternal.ad.ic.ac.uk</soaserverhostname>
      <soaserverport>80</soaserverport>
      </server>
      </IC_Deploy>
      </pips>

      This way we can have deployment plans of the form:
      <DeploymentPlan component="TEST_FIRE_FORGET" version="3.0">
      <PreInstallScript/>
      <Configurations>
      <EndpointConfigurator target-server="pips.IC_Global" dir="${AIA_HOME}/pips/ICPatches/wls000001"/>
      </Configurations>
      <Deployments>
      <Composite compositeName="CreateInvoiceListEbizOSSReqABCSImpl" compositedir="${AIA_HOME}/pips/ICPatches/wls000001/CreateInvoiceListEbizOSSReqABCSImpl" revision="1.0" wlserver="pips.IC_Deploy" action="deploy"/>
      </Deployments>
      </DeploymentPlan>

      This configured the endpoint to the IC_Global value (which is devsoa.imperial.ac.uk)
      but when it deployed the composite it connected to IC_Deploy (which is devsoainternal.ad.ic.ac.uk)

      This worked fine in 11.1.1.2

      In 11.1.1.5 something has changed. Instead of configuring the endpoints in the composite to devsoa.imperial.ac.uk, the endpointconfigurator is using devsoainternal.ad.ic.ac.uk.
      Of course when they execute they all break because the server address is wrong.

      If I change the deployment to point to devsoa.imperial.ac.uk I can view the composite and see that the endpoints are now correct. The problem is the deployment process fails because it can't see devsoa.imperial.ac.uk.
      Can anyone tell me why Endpointconfigurator is ignoring it's target-server tag in 11.1.1.5 and just using the deployment server?

      Thanks
      Robert
        • 1. Re: EndpointConfigurator is breaking my composites
          RobertMetcalf
          Hi all,

          I have found what I think is the source of the problem.
          In the file $AIA_HOME/Infrastructure/Install/AID/lib/AIDDeploymentLibraryTasks.xml
          You can see the code which deals with the composite tag in the deployment plan.
          On line 160 you can see the following:
          <EndpointConfigurator target-server="@{wlserver}" dir="@{compositedir}" />

          This occurs in the middle of the handler for the composite tag. This means that it dosn't matter what EndpointConfigurator params I run in my deployment plan, the actual composite deployment process re-runs the EndpointConfigurator using exactly the same server as it will deploy to.
          This is what is breaking everything for me!
          What I really need is for Oracle to add an attribute to the Composite macro called target-server, this can be defaulted to wlserver (to maintain current functionality) and I can set it to what is needed in my cluster enviroment.

          Can anyone confirm if I am right?

          Robert
          • 2. Re: EndpointConfigurator is breaking my composites
            Raghavateja Kalapatapu
            Hello Robert,

            I would like to understand your usecase a bit more.
            Are servers devsoainternal.ad.ic.ac.uk and devsoa.imperial.ac.uk related? Why are you deploying on to one server, but want your service references to point to some other server?

            -Teja

            Edited by: Raghavateja Kalapatapu on Jun 20, 2011 10:33 AM
            • 3. Re: EndpointConfigurator is breaking my composites
              RobertMetcalf
              Hi,

              I think devsoa.imperial.ac.uk is the load balancer
              and devsoainternal.ad.ic.ac.uk is the internal address of the server.

              From what I understand when we call a service this call has to go thruogh the load balancer to determine which server in the cluster to run on.
              When we try and deploy through the load balancer we get an error, probally because the load balancer dosn't do deployments.
              So when we deploy we have to connect to the actual server we need to deploy to.

              Our DBA is not in today. When he is back I will be able to provide a more detailed explination if required.

              Robert

              Edited by: RobertMetcalf on Jun 20, 2011 11:23 AM
              • 4. Re: EndpointConfigurator is breaking my composites
                Raghavateja Kalapatapu
                hello Robert,

                While we wait for more information from your DBA.
                Few points:

                1. I hope your setup following SOA Suite EDG. Please take a look at a reference topology http://download.oracle.com/docs/cd/E21764_01/core.1111/e12036/overview.htm#CHDJDIEH (section 1.5)
                2. Please refer to the section 2.2.1 http://download.oracle.com/docs/cd/E21764_01/core.1111/e12036/net.htm#BHCFEAEB on what the Virtual server names mean.

                If you have setup your cluster according to the above guide, then you can just use SOA internal virtual server as a cluster url for your deployments i.e. you can use internal load balancer URL in your AIAInstallProperties.xml.

                let me know if you have further questions.

                -Teja

                Edited by: Raghavateja Kalapatapu on Jun 20, 2011 4:38 PM
                • 5. Re: EndpointConfigurator is breaking my composites
                  RobertMetcalf
                  Hi,
                  I will put that information onto our DBA's who do the setup or the servers.
                  Thanks
                  Robert

                  Edited by: RobertMetcalf on Jun 20, 2011 12:33 PM
                  • 6. Re: EndpointConfigurator is breaking my composites
                    RobertMetcalf
                    Hi,
                    I have heard back from our DBA. He says we are set up according to the EDG guide and gave me this:

                    soa.mycompany.com
                    soa.mycompany.com is a virtual server name that acts as the access point for all
                    HTTP traffic to the runtime SOA components, such as soa-infra, workflow, and B2B.
                    Traffic to SSL is configured. Clients access this service using the address
                    soa.mycompany.com:443. This virtual server is defined on the load balancer.

                    admin.mycompany.com
                    admin.mycompany.com is a virtual server name that acts as the access point for all
                    internal HTTP traffic that is directed to administration services such as WebLogic
                    Administration Server Console and Oracle Enterprise Manager.
                    Note: These privileges should be granted to the owner of the
                    soainfra schema, as determined by the RCU operations.
                    The incoming traffic from clients is not SSL-enabled. Clients access this service using
                    the address admin.mycompany.com:80 and the requests are forwarded to port 7777
                    on WEBHOST1 and WEBHOST2.
                    This virtual server is defined on the load balancer.

                    soainternal.mycompany.com
                    soainternal.mycompany.com is a virtual server name used for internal
                    invocations of SOA services. This url is not exposed to the internet and is only
                    accessible from the intranet. (For SOA systems, users can set this while modeling
                    composites or at runtime with the appropriate EM/MBeans, as the url to be used for
                    internal services invocations.)
                    The incoming traffic from clients is not SSL-enabled. Clients access this service using
                    the address soainternal.mycompany.com:80 and the requests are forwarded to
                    port 7777 on WEBHOST1 and WEBHOST2.
                    This virtual server is defined on the load balancer.


                    The setup that works for us is:
                    Composites point to devsoa.imperial.ac.uk
                    Deployed to server devsoainternal.ad.ic.ac.uk

                    Trying to deploy to server devsoa.imperial.ac.uk will fail for us.
                    Trying to get composites to point too devsoainternal.ad.ic.ac.uk fails for us as well.
                    Robert
                    • 7. Re: EndpointConfigurator is breaking my composites
                      RobertMetcalf
                      This was caused by us using a non standard config
                      • 8. Re: EndpointConfigurator is breaking my composites
                        sampathk
                        Hi,

                        I am having a different issue with the end point configurator.

                        We have two instances of soa servers. We have composites on soa server A that invoke shared composites deployed on server B. While running the end point configurator all urls point to Server "A". Is there any way that I can use End point configuration to make it work in these scenarios?


                        Thanks,
                        • 9. Re: EndpointConfigurator is breaking my composites
                          RobertMetcalf
                          Hi,
                          What version of SOA are you using.
                          Robert
                          • 10. Re: EndpointConfigurator is breaking my composites
                            sampathk
                            We are using SOA PS5 11.1.1.6.
                            • 11. Re: EndpointConfigurator is breaking my composites
                              RobertMetcalf
                              Hi,
                              The following may work for you (It works in 11.1.1.5). (This solution didn’t come from Oracle)
                              First a bit of history:
                              In 11.1.1.2 You had to explicitly call the endpoint Configurator in your deployment plans. This was flexible as you could deploy to one server but have end points configured to point to a different address.
                              In 11.1.1.5 They moved the call to endpoint Configurator into the deployment code. This meant that the endpoints were always configured to point to the same location that you deployed to.

                              My ‘fix’ was to remove this automatic call to endpoint Configurator and put it back in the deployment plan. This meant that:
                              1.     All your deployment plans need a call to endpoint Configurator
                              2.     You can now configure endpoint Configurator to point to a different server that you deploy to.
                              So the instructions of how to implement this are as follows:
                              Alter the file $AIA_HOME/Infrastructure/Install/AID/lib/AIDDeploymentLibraryTasks.xml at line 160 it calls the EndPointConfigurator and passes the server refered to by wlserver. Comment out this line
                              (The line to comment is the one with the RJM REMOVED text. I have included the bit before and after as it may be a different line number in 11.1.1.6)
                              <pre>
                              <!-- Check for no-action before validations -->
                              <if>
                              <equals arg1="@{action}" arg2="no-action" />
                              <then>
                              <echo message="No-action has been selected due to the condition specified in the policy file for the Composite: @{compositeName}"></echo>
                              </then>

                              <else>
                              <ValidateSOAServerDetails wlserver="@{wlserver}"/>
                              <!-- Perform deploy or undeploy depending on the value in action attribute -->
                              <!--RJM REMOVED THIS LINE <EndpointConfigurator target-server="@{wlserver}" dir="@{compositedir}" /> -->
                              <if>
                              <equals arg1="@{configplan}" arg2="null"/>
                              <then>
                              <if>
                              <available file="@{compositedir}/AIAConfigurationPlan.xml" type="file" />
                              <then>
                              <var name="configurationPlan" value="@{compositedir}/AIAConfigurationPlan.xml"/>
                              </then>
                              <elseif>
                              <available file="@{compositedir}/@{compositeName}_cfgplan.xml" type="file" />
                              <then>
                              <var name="configurationPlan" value="@{compositedir}/@{compositeName}_cfgplan.xml"/>
                              </then>
                              </pre>

                              Next you need to setup what end point Configurator will point to. Open the following file:
                              $AIA_HOME/aia_instances/$AIA_INSTANCE/config/AIAInstallProperties.xml
                              In this file in properties/pips you will see blocks of text like:
                              <pre>
                              <AIADemo>
                              <version>11.1.1.5.0</version>
                              <server>
                              <adminhostname>hostname.com</adminhostname>
                              <adminport>7001</adminport>
                              <domainname>soa_domain</domainname>
                              <username>weblogic</username>
                              <password>weblogic1</password>
                              <servertype>Cluster</servertype>
                              <soaserver>SOA_Cluster</soaserver>
                              <soaserverhostname>devsoainternal.ad.ic.ac.uk</soaserverhostname>
                              <soaserverport>80</soaserverport>
                              </server>
                              </AIADemo>
                              </pre>
                              Copy and paste this for each server you want to redeploy to and fill in the correct details.
                              Change the tag name from AIADemo to some string e.g. IC_Deploy
                              Not add a configuration section to your deployment plans so they are similar to the following:
                              <pre>
                              <DeploymentPlan component="ICIS-OSS-TCA-PIP-001" version="3.0">
                              <PreInstallScript/>
                              <Configurations>
                              <EndpointConfigurator target-server="pips.IC_Global" dir="${AIA_HOME}/pips/ICPatches/wls000013"/>
                              </Configurations>
                              <Deployments>
                              <Composite compositeName="COMPISITENAME" compositedir="${AIA_HOME}/pips/ICPatches/wls000013/COMPISITENAME" revision="1.0" wlserver="pips.IC_Deploy" action="deploy" overwrite="false"/>
                              </Deployments>
                              </DeploymentPlan>
                              </pre>

                              Here you can see that if have set endpoint Configurator to run in the directory ${AIA_HOME}/pips/ICPatches/wls000013 and to configure the endpoints to point to pips.IC_Global

                              This setup should work for you but it is not an official oracle solution.
                              Robert