2016-09-13 4 views
3

Я работаю с приложением, которое должно знать, работает ли он на WAS или работает на Liberty Profile.Как приложение может сказать, работает ли он на IBM WebSphere Application Server или IBM WebSphere Liberty Profile?

В WAS он должен позвонить в API-интерфейс администратора, но в профиле Liberty он должен использовать JNDI, чтобы сделать то же самое.

ответ

1

Один из способов, что приложение может сказать, если он работает на Liberty является поиск следующих MBean: WebSphere:name=com.ibm.ws.config.mbeans.FeatureListMBean

Вот список all MBeans provided in Liberty

Вот пример кода, как вы можете запросить MBean:

private boolean isLiberty() throws Exception { 
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
    ObjectName obn = new ObjectName("WebSphere:name=com.ibm.websphere.config.mbeans.FeatureListMBean"); 
    Set<ObjectInstance> s = mbs.queryMBeans(obn, null); 
    return s.size() > 0; 
} 
+1

Единственная проблема заключается в том, что он загрузит стек JMX, который может быть медленным. Альтернативой было бы попытаться загрузить классы интерфейса MBean, они будут только в Liberty. – Alasdair

 Смежные вопросы

  • Нет связанных вопросов^_^