gpt4 book ai didi

java - 应用程序运行在哪个网络服务器上

转载 作者:行者123 更新时间:2023-11-30 07:11:08 25 4
gpt4 key购买 nike

我有一个可以在 tomcat 和 jboss 上运行的 java 应用程序。

我需要根据网络服务器类型执行“if 条件”来执行某些任务。

我如何访问这些信息?

我需要这样做,因为我需要连接到数据源,并且我可以根据网络服务器以不同的方式获取上下文:

try{
String webserver = getWebServer();
Logger logger=Logger.getLogger("myLog");
if(webserver.equalsIgnoreCase("Jboss")){
logger.severe("Webserver: " + webserver);
Hashtable<String, String> ht= new Hashtable();
ht.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
ht.put(InitialContext.PROVIDER_URL,"jnp://localhost:1099");
ht.put(InitialContext.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
InitialContext ic=new InitialContext(ht);
if(ic!=null){
logger.severe("success");/*I am getting success as output here*/
DataSource ds=(DataSource)ic.lookup(getDatasource());
/*this is where it's failing*/
if(ds!=null){
logger.severe("success1");
}
return ds.getConnection();
}
return null;
}
else{ //TOMCAT
logger.severe("Webserver: " + webserver);
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource) envCtx.lookup(getDatasource());

// Allocate and use a connection from the pool
Connection conn = ds.getConnection();
return conn;
}

}

Tomcat 版本不适用于 jboss,反之亦然谢谢!

最佳答案

由于您的应用程序可以在 Tomcat 上运行,这是一个简单的 servlet 容器,因此您可能希望使用 ServletContext#getServerInfo() .获取有关您的应用程序在其中运行的环境的信息。

关于java - 应用程序运行在哪个网络服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475613/

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