2 votes

Ant, Maven et Jdeveloper SOA Extension

Nous sommes au milieu d'un grand projet/programme Java EE. Jusqu'à présent, nous avons utilisé Eclipse et Maven pour notre développement. L'appserver que nous visons est WebLogic (Oracle, de nos jours).
Il a été décidé que nous allions commencer à utiliser Oracle Business Rules (partie d'Oracle SOA Suite 11g). Le développement pour Soa Suite est limité à JDeveloper. Il dispose de quelques scripts ant scripts pour construire et déployer des Composites SOA (ce qui est la façon dont les règles sont emballées et déployées).
J'ai été chargé de faire exécuter ces ant scripts à partir de maven en utilisant antrun, et j'ai fait une partie du chemin, mais pas tout....
Ma principale question est la suivante : quelqu'un a-t-il réussi à le faire ? (Est-ce que quelqu'un a déjà essayé... ? Je n'ai rien trouvé sur Google...)

Vous trouverez ci-dessous la partie correspondante de mon pom :

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>compile</phase>
        <configuration>
          <target>
            <property name="oracle.home" value="C:\Oracle\Middleware\jdeveloper"/>
            <property name="oracle.soa.mgmt.home" value="C:\Oracle\Middleware\jdeveloper"/>
            <property name="common.components.home" value="C:\Oracle\Middleware\oracle_common"/>
            <property name="env.JAVA_HOME" value="${java.home}"/>
            <property name="env.PWD" value="."/>
            <ant antfile="${oracle.home}\bin\ant-sca-compile.xml"/>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

Maven est exécuté à partir du répertoire du projet, en dehors de l'arborescence Oracle/Middleware. Cela fonctionne presque...
En fait, il donne le résultat suivant :

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building BilagorReglerSCA
[INFO]    task-segment: [compile]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks

main:

scac:
Validating composite "C:\JDeveloper\mywork\BilagorReglerSCA\BilagorRegler\composite.xml"
     [scac] oracle.fabric.common.wsdl.XSDException: Error loading schema from file:/C:/JDeveloper/mywork/BilagorReglerSCA/BilagorRegler/BilagorRegler_DecisionService.wsdl [Cause=Error in getting XML input stream: oramds:/soa/shared/rules/BpelProcess.xsd: oracle.mds.exception.MDSException: MDS-00054: Filen som ska laddas oramds:/soa/shared/rules/BpelProcess.xsd finns inte.]
     [scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadEmbeddedSchemas(SchemaBuilder.java:496)
     [scac]     at oracle.fabric.common.wsdl.SchemaBuilder.loadSchemasFromWSDL(SchemaBuilder.java:365)
...

La phrase "Filen som ska laddas oramds:/soa/shared/rules/BpelProcess.xsd finns inte." signifie que le "fichier que vous essayez de charger n'existe pas" (pourquoi mon client insiste-t-il pour installer une version suédoise de Windows, plutôt qu'une version internationale ?)
Le fichier ant-sca-compile.xml contient de nombreuses déclarations d'importation similaires à celle-ci :

     <fileset dir="${common.components.home}/modules">
        ...
        <include name="oracle.mds_11.1.1/oramds.jar"/>

Je suppose que oramds.jar est nécessaire pour traiter les oramds-URL:s, qui sont utilisés dans les WSDS/XSD:s générés par JDeveloper.

Toute aide est la bienvenue...

2voto

Larsing Points 66

J'ai finalement eu l'occasion de m'asseoir avec un consultant Oracle chevronné et de faire fonctionner ce système.

Voici ce que nous avons trouvé :

<properties>
    <oracle.fmw.soa.home>C:/Oracle/Middleware</oracle.fmw.soa.home>
    <!-- this is relative reference to JDK / Jrockit from ant-sca-compile|*.xml. For jdev it is ../../, for Soa Suite: TBD. -->
    <env.JAVA_HOME>../../jdk160_24</env.JAVA_HOME>
    <!-- For real server with Soa Suite installed use: Oracle_SOA1, for devenv use jdeveloper -->
    <oracle.fmw.productName>jdeveloper</oracle.fmw.productName>
    <antOutputDir>deploy</antOutputDir>
    <mvnOutputDir>target</mvnOutputDir>
</properties>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <id>sca-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <property name="scac.input" value="${basedir}/composite.xml" />
                            <property name="scac.application.home" value="${basedir}/.." />
                            <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" />
                            <ant
                                antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-compile.xml"
                                dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/"
                                target="scac" />
                        </target>
                    </configuration>
                </execution>
                <execution>
                    <id>sca-package</id>
                    <phase>package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target name="package">
                            <property name="build.compiler" value="extJavac" />
                            <property name="compositeName" value="${project.artifactId}" />
                            <property name="compositeDir" value="${basedir}" />
                            <property name="revision" value="${project.version}" />
                            <property name="scac.application.home" value="${basedir}/.." />
                            <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" />
                            <property name="antOutputFile" value="sca_${project.artifactId}_rev${project.version}.jar" />
                            <property name="mvnOutputFile" value="${project.artifactId}-${project.version}.jar" />
                            <ant
                                antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-package.xml"
                                dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin"
                                target="package" />
                            <copy tofile="${mvnOutputDir}/${mvnOutputFile}" file="${antOutputDir}/${antOutputFile}" />
                        </target>
                    </configuration>
                </execution>
                <execution>
                    <id>sca-deploy</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target name="deploy">
                            <property name="serverURL" value="${weblogic.serverURL}" />
                            <property name="user" value="${weblogic.user}" />
                            <property name="password" value="${weblogic.password}" />
                            <property name="sarLocation" value="${basedir}/deploy/sca_${project.artifactId}_rev${project.version}.jar" />
                            <property name="overwrite" value="true" />
                            <property name="forceDefault" value="true" />
                            <property name="partition" value="default" />
                            <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" />
                            <ant
                                antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-deploy.xml"
                                dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin"
                                target="deploy" />
                        </target>
                    </configuration>
                </execution>
                <execution>
                    <id>sca-test</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target>
                            <property name="jndi.properties.input" value="${basedir}/sca-test.jndi.properties" />
                            <property name="scatest.input" value="scatestinput" />
                            <property name="scatest.format" value="junit" />
                            <property name="scatest.result" value="reports" />
                            <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" />
                            <ant
                                antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-test.xml"
                                dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin"
                                target="test" />
                        </target>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Notez que les deux ensembles de propriétés et de paramètres du ant-tag sont différents de ce que j'avais tenté de faire à l'origine.

Pour fonctionner sur un serveur CI, vous avez évidemment besoin d'une installation locale de JDeveloper ou de SOA Suite. weblogic.serverURL , weblogic.user y weblogic.password doit être réglé sur votre environnement correspondant (j'utilise des profils pour local/dev/tst/etc...).

A part cela, il fonctionne comme un charme...

1voto

Angus Points 11

Je n'ai pas utilisé Maven + Oracle SOA build scripts mais en général, lorsque vous utilisez l'un des outils de déploiement Oracle (ADF, SOA, etc), vous devez avoir soit un Oracle SOA Home, soit un JDev home (avec l'extension SCA) sur la même machine que celle sur laquelle le build est exécuté. Vous devrez définir correctement les variables d'environnement Ant, par exemple oracle.home et common.components.home, etc.

0voto

sasah Points 54

Utilisation ant-sca-package.xml (pas ant-sca-compile.xml ) :

<ant antfile="ant-sca-package.xml" dir="${env.BEA_HOME}/jdeveloper/bin">
  <property name="compositeDir" value="@{compositeDir}" />
  <property name="compositeName" value="@{compositeName}" />
  <property name="revision" value="${deploy.revision}" />
</ant>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X