有可能"清洁"使用maven将Oracle服务总线项目部署到OSB?

时间:2017-06-01 08:15:29

标签: maven weblogic wlst oracle-service-bus

我需要确保项目的干净maven部署。 我的意思是不是“清理部署”,而是在部署(覆盖)之前从OSB中删除现有项目。 如果您在OSB上覆盖项目,则无法确保其所有资源都将更新。当项目中的某些资源被覆盖而有些资源没有被覆盖时,我已经看到很多情况。这是一种非常不可预测的行为。 所以问题是:在部署之前强制更新项目是maven(maven服务总线插件还是其他一些像maven weblogic)的任务或参数?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了解决方案。这并不简单。其实我不喜欢它,但它有效。

我找到的唯一解决方案是使用WLST从OSB控制台删除服务(OSB术语中的项目)。 我在Martien van den Akker的博客中找到的工作脚本:http://blog.darwin-it.nl/2014/03/osb-remove-artefacts-with-wlst.html

已准备好使用脚本。但这仅适用于OSB 11,并且不适用于OSB 12。 因此,您可以使用此解决方法:http://soamagic.blogspot.com/2016/05/osb-12c-java.html

在我的CI服务器(基于Hudson)中,我添加了Maven构建步骤来启动sh-script,它以py-script作为参数执行wlst.sh(实际上有4个以上的参数 - weblogic admin username,password,url和其他 - 要删除的项目名称)。此构建步骤在每个服务部署之前执行。 这可以保证将最新版本的服务部署到OSB服务器。

编辑:不确定是否值得发帖,但我希望有人能在我的代码中找到有用的东西。所以这就是:

  1. Maven build:

    <profile> <id>undeployService</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.5.0</version> <executions> <execution> <id>wlst-undeploy-service</id> <phase>process-resources</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable> ${project.basedir}/../conf/WLST/undeployProject.sh </executable> <arguments> <argument> ${weblogic.username} </argument> <argument> ${weblogic.password} </argument> <argument> ${weblogic.url} </argument> <argument> ${project.artifactId} </argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>

  2. undeployProject.sh脚本:

  3. . ${MW_HOME}/osb/tools/configjar/setenv.sh ${MW_HOME}/osb/tools/configjar/wlst.sh ../conf/WLST/undeployProject.py $*