веб-сервис axis2. Где поставить свою конфигурацию - PullRequest
0 голосов
/ 17 февраля 2010

Я написал Web-сервис на Java с использованием axis2 и развертыванием POJO (на сервере Tomcat). Мой сервис открывает соединение с базой данных MySQL. Для этого мне нужна строка подключения. Где я могу разместить строку подключения, чтобы мне не приходилось жестко ее кодировать в коде? И как я могу получить к нему доступ из кода? Я хотел бы установить этот параметр где-то на уровне обслуживания, а не глобально для всего сервера. Это возможно?

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Если вы хотите использовать файл конфигурации, вы можете разместить его в следующем месте:

axis2/WEB-INF/services/classes/config-file.xml

Вы можете получить доступ к этому файлу в коде с помощью загрузчика классов AxisService, который доступен во время запуска (ConfigurationContext)configctx, сервис AxisService).startUp () запускается при запуске службы (после развертывания или после перезапуска контейнера).

import org.apache.axis2.engine.ServiceLifeCycle;
public class LifeCycleImpl implements ServiceLifeCycle {

    public void startUp(ConfigurationContext configctx, AxisService service) {    

        InputStream in  = service.getClassLoader().getResourceAsStream("config-file.xml");
        //Extract your database config from the input stream

        //Create database connection

        //Store the connection as a service parameter using service.AddParameter

}

Во время использования метода init(ServiceContext serviceContext) в классе реализации службы вы можете получить доступ к соединению с базой данных.создается во время ServiceLifeCycle.startUp() с помощью метода ServiceContext.getAxisService().getParamterValue().

Примечание : Вы должны указать класс реализации ServiceLifeCycle в файле services.xml вашей службы в качестве атрибута class дляservice tag:

<!-- The class attribute defines the hook into the Service lifecycle methods
startUp and shutDown -->
<service name="YourService" class="com.macima.webservice.LifeCycleImpl">
    <!--Specify the web service's implementation class -->
    <parameter name="ServiceClass">com.macima.webservice.ServiceImpl</parameter>    
    <!--Declare methods exposed by the web service-->
    <operation name="getSomething">
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>
    </parameter>
</service>

При таком подходе ваш файл конфигурации хранится вне файла aar.Преимущество заключается в том, что вы можете продвигать один и тот же файл aar в различных тестовых средах, выбирая соответствующие параметры для каждой среды в конфигурационном файле для конкретной среды.Кроме того, вы можете редактировать файл конфигурации, не открывая файл aar.

1 голос
/ 17 февраля 2010

Вы можете использовать tomcat для настройки подключения к БД, а затем просто найти javax.sql.DataSource с помощью JNDI.

Посмотрите на это для кота:

Использование JNDI также означает, что вы автоматически становитесь немного более совместимым в случае, если вам когда-либо понадобится перейти на другой веб-контейнер / сервер приложений.

...