gpt4 book ai didi

java - Liberty Profile 8.5.5.5 上的代码源

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:42 25 4
gpt4 key购买 nike

我正在尝试部署 dropwizard (dw) 应用程序使用 wizard-in-a-box (wiab) 在 IBM Liberty Profile 8.5.5.5 上,但我遇到了 io.dropwizard.util.JarLocation 类的一些问题。 wiab 将尝试获取包装 dw 应用程序的 Listener 类的位置,但由于该类的 ProtectionDomain 中的 CodeSource 对象为 null.

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 内部部署普通 war 和爆炸 war ,以及将 dropin 文件夹与预建 war 一起使用。 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

最佳答案

Liberty 配置文件目前没有为应用程序类设置 CodeSource。正如您所注意到的,这个问题已在当前的测试版中得到解决,并将在 6 月 26 日发布 8.5.5.6 时得到解决。

关于java - Liberty Profile 8.5.5.5 上的代码源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com