我正在制作一个宁静的 Web 服务Service A,它又调用另一个休息服务Service B。服务 B是打包为战争档案的外部资源。该服务在WEB-INF/switchyard.xml中包含一个常规的 switchyard 文件。可悲的是,switchyard 文件中的属性是相当静态的,即代理设置,这会干扰我的测试。我想做的是编辑 switchyard.xml 文件,并删除部分以适应不必要的代理设置。
这是我为Service B创建可部署的方式:
@Deployment(name = "my-service", order = 1, testable = false)
public static Archive<?> svcMyDeployable() {
final File file = Maven.configureResolver().fromFile(System.getProperty("settings.xml"))
.loadPomFromFile("pom.xml").resolve("com.sample.service:cool-service:war:?")
.withoutTransitivity().asSingleFile();
final WebArchive war = ShrinkWrap.createFromZipFile(WebArchive.class, file);
final WebArchive archive = ShrinkWrap.create(WebArchive.class, "cool-service.war").merge(war);
return archive;
}
我能想到的覆盖Service B中 switchyard.xml 文件属性的唯一方法是将WEB-INF/switchyard.xml替换为自定义的。我可以这样做:
archive.delete("/WEB-INF/switchyard.xml");
archive.addAsWebInfResource("custom-switchyard/switchyard.xml");
有没有更好的方法来实现这一点?我真正需要做的就是从原始 switchyard.xml 文件中删除 6 行:
<http:proxy>
<http:host>10.10.10.10</http:host>
<http:port>9999</http:port>
<http:user>username</http:user>
<http:password>password</http:password>
</http:proxy>