如何在glassfish 3中获取ServerContext

如何在glassfish 3中获取ServerContext,glassfish,glassfish-3,glassfish-2.x,Glassfish,Glassfish 3,Glassfish 2.x,我是一个拥有12年以上历史的代码库的骄傲继承人,多年来,许多工程师一直在开发这个代码库。我的任务是将我们的系统从glassfish 2.1.1升级到glassfish 3.1.2.2。在指向新的glassfish 3罐子之后,除了我遇到的一个问题之外,大多数东西都编译得很好。有这样一种方法: public boolean isRunningInApplicationServer() { return ApplicationServer.getServerContext() != null

我是一个拥有12年以上历史的代码库的骄傲继承人,多年来,许多工程师一直在开发这个代码库。我的任务是将我们的系统从glassfish 2.1.1升级到glassfish 3.1.2.2。在指向新的glassfish 3罐子之后,除了我遇到的一个问题之外,大多数东西都编译得很好。有这样一种方法:

public boolean isRunningInApplicationServer() {
    return ApplicationServer.getServerContext() != null;
}

编译器找不到“com.sun.enterprise.server.ApplicationServer”。我假设有一种使用Glassifsh3获取ServerContext的新方法。有人有什么建议吗?

我和你有完全相同的问题。。使用该代码和其他类。我刚刚发现的是:

如果SecurityServicesUtil.getInstance!=null&&SecurityServicesUtil.getInstance.isServer

GF 3 API的等级为: com.sun.enterprise.security.SecurityServicesUtil from security.jar

它在内部使用glassfish-api.jar中的org.glassfish.api.admin.ProcessEnvironment类


希望这对您有所帮助

说return true很有诱惑力,因为它运行在应用服务器中。。。但这种方法可能是有原因的。与其试图重写它,不如试着找出它应该做什么,以及为什么/如果需要它。也许你可以删除它。毕竟,代码已经12年多了……不幸的是,我不能删除它。如果代码的某些部分作为独立进程运行,则它们的行为需要有所不同。这一级别的重构可能超出了范围,新版本的Glassfish可能会有一个类似的重构,但它可以实现得像检查系统属性或类似的功能一样简单和可移植。在应用服务器的JVM选项中设置system属性,在独立运行时不要设置它。