我有一个可以在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,反之亦然 谢谢!
答案 0 :(得分:2)
但是,使用System属性可以实现非常不寻常的要求。在服务器启动脚本中,传递 JAVA_OPTS 中的系统属性,如:
-Dserver=tomcat
为不同的服务器传递不同的值,然后您可以通过以下代码读取此系统属性:
System.getProperty("server");
答案 1 :(得分:2)
由于您的应用程序可以在Tomcat(一个简单的servlet容器)上运行,因此您可能希望使用ServletContext#getServerInfo()。获取有关您的应用程序在其中运行的环境的信息。