Как получить текущее местоположение EAR программно с JBoss

Вы использовали бы его в своем собственном классе, так как никакой встроенный класс не использует его.

Numpy использует его, как указано в документация . Некоторые примеры здесь .

В Вашем собственном классе, Вы использовали бы его как это:

>>> class TestEllipsis(object):
...     def __getitem__(self, item):
...         if item is Ellipsis:
...             return "Returning all items"
...         else:
...             return "return %r items" % item
... 
>>> x = TestEllipsis()
>>> print x[2]
return 2 items
>>> print x[...]
Returning all items

, Конечно, существует документация Python , и ссылка языка . Но те не очень полезны.

7
задан ptdev 6 August 2009 в 14:18
поделиться

3 ответа

Я делаю так.
В EAR есть служба MyService, где я работаю с содержимым EAR:

import org.jboss.system.ServiceControllerMBean;
import org.jboss.system.ServiceMBeanSupport;

public class MyService extends ServiceMBeanSupport {

    public void workWithEar() 
    {
        ServiceControllerMBean serviceController = (ServiceControllerMBean) MBeanProxy.get(
                    ServiceControllerMBean.class,
                    ServiceControllerMBean.OBJECT_NAME, server);
        // server is ServiceMBeanSupport member

        ClassLoader cl = serviceController.getClass().getClassLoader();

        String path = cl.getResource("META-INF/jboss-service.xml").getPath()
        InputStream file = cl.getResourceAsStream("META-INF/jboss-service.xml");
    }
}
3
ответ дан 6 December 2019 в 19:40
поделиться

Это довольно неудобно, но вы можете сделать это, запросив JBoss MainDeployer MBean. MBean находится по адресу jboss.system: service = MainDeployer и имеет операцию JMX listDeployments . Это возвращает коллекцию объектов DeploymentInfo , одним из которых будет ваше развертывание EAR. У этого DeploymentInfo есть свойство url , которое представляет собой file: // URL, описывающий ваш каталог развертывания.

Отлично, а? Для этого вы можете использовать необработанный JMX API, но Spring предоставляет гораздо более удобный механизм, используя MBeanProxyFactoryBean для предоставления экземпляра MainDeployerMBean .

Я хотел бы найти более простой способ, но это лучшее, что я нашел до сих пор.

2
ответ дан 6 December 2019 в 19:40
поделиться

Отображаются ли эти ресурсы или доступны ли они по веб-пути (в рамках WAR)?

Если да, вы можете попытаться использовать ServletContext.getRealPath () для преобразования виртуального пути в реальный / путь к файловой системе.

1
ответ дан 6 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: