我試圖部署dropwizard(DW)對IBM個人資料自由使用8.5.5.5 wizard-in-a-box(WIAB)應用程序,但我遇到的問題索姆與io.dropwizard.util.JarLocation
類。 wiab將嘗試獲取包裝dw應用程序的Listener類的位置,但是無法這樣做,因爲類中的CodeSource
對象是null
。CodeSource的自由女神檔案8.5.5.5
klass.getProtectionDomain().getCodeSource().getLocation()
但是,我試過部署在Tomcat 8和最新的Liberty Profile v9 beta上,它們都能正常工作。
Liberty服務器上的兩個server.xml文件在功能上看起來都是相同的。
<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>servlet-3.1</feature>
<feature>jsp-2.3</feature>
<feature>el-3.0</feature>
<feature>websocket-1.1</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint id="defaultHttpEndpoint" httpPort="9080" httpsPort="9443" />
<applicationMonitor updateTrigger="mbean" />
<application id="moshpit_war_war_exploded" location="D:\code\moshpit\moshpit-war\target\moshpit" name="moshpit_war_war_exploded" type="war" context-root="/" />
</server>
我已經試過同時部署了普通的戰爭,並從內部的IntelliJ分解的戰爭,以及使用脫入文件夾預建的戰爭。 v9 beta版本會玩的不錯,但不是8.5.5.5。
這是監聽器類包裝的DW應用:
@WebListener
public class MoshpitWebApplication extends WebApplication<MoshpitConfiguration> {
private static final Logger LOGGER = LoggerFactory.getLogger(MoshpitWebApplication.class);
public MoshpitWebApplication() {
super(new MoshpitApplication(), "/configuration/moshpit.yml");
}
}
,這是我的DW應用類
public class MoshpitApplication extends Application<MoshpitConfiguration> {
public MoshpitApplication() {
}
public static void main(String[] args) throws Exception {
new MoshpitApplication().run(args);
}
@Override
public String getName() {
return "moshpit";
}
@Override
public void initialize(Bootstrap<MoshpitConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(new FileConfigurationSourceProvider());
// nothing to do yet
}
@Override
public void run(MoshpitConfiguration configuration, Environment environment) throws Exception {
final Template template = configuration.buildTemplate();
environment.healthChecks().register("template", new TemplateHealthCheck(template));
environment.jersey().register(new HelloWorldResource(template));
}
}
更新:
這似乎是一個普遍的問題與Liberty 8.5.5.5。試圖部署一個完全不同的應用程序,我觀察到相同的行爲。對於應用程序類,CodeSource
是null
。
謝謝!這是個好消息! –
從8.5.5.6開始,現在設置了代碼源,它將不具有APAR,因爲它是作爲Java EE 7支持的一部分完成的。 – Alasdair