2015-05-20 23 views
3

我試圖部署dropwizardDW)對IBM個人資料自由使用8.5.5.5 wizard-in-a-boxWIAB)應用程序,但我遇到的問題索姆與io.dropwizard.util.JarLocation類。 wiab將嘗試獲取包裝dw應用程序的Listener類的位置,但是無法這樣做,因爲類中的CodeSource對象是nullCodeSource的自由女神檔案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。試圖部署一個完全不同的應用程序,我觀察到相同的行爲。對於應用程序類,CodeSourcenull

回答

2

Liberty配置文件當前沒有爲應用程序類設置CodeSource。正如你注意到的,這是在目前的測試版中解決的,將在6月26日發佈8.5.5.6時解決。

+0

謝謝!這是個好消息! –

+0

從8.5.5.6開始,現在設置了代碼源,它將不具有APAR,因爲它是作爲Java EE 7支持的一部分完成的。 – Alasdair