Как использовать встроенный сервер Grizzly как для Mule, так и для Jersey
Вопрос
В настоящее время я использую JerseyTest со встроенным сервером Grizzly для тестирования некоторого кода.Я делаю несколько очень простых настроек, чтобы указать ему на нужные ресурсы:
Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "com.sample.service");
ApplicationDescriptor appDescriptor = new ApplicationDescriptor();
appDescriptor.setServletInitParams(initParams);
super.setupTestEnvironment(appDescriptor);
Это работает нормально, и компоненты Джерси доступны и работают должным образом.
Сейчас я пытаюсь добавить некоторые функциональные возможности Mule к некоторым из этих вызовов Jersey, но Mule неправильно инициализируется / настраивается Grizzly.Кто-нибудь запустил подобную настройку?Какую дополнительную конфигурацию мне нужно выполнить с JerseyTest / GrizzlyWebServer, чтобы заставить его правильно инициализировать Mule?
Решение
Хотя это не идеально, потому что экземпляр mule не может использовать Grizzly по умолчанию, я смог заставить это работать, просмотрев mule отдельно с помощью:
DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
SpringXmlConfigurationBuilder configBuilder = new SpringXmlConfigurationBuilder("mule-config.xml");
muleContext = muleContextFactory.createMuleContext(configBuilder);
muleContext.start();
Другие советы
Я не уверен, чего вы пытаетесь достичь, но вы можете использовать разъем Mule Jersey connector.Mule будет обрабатывать HTTP-запросы (вместо Grizzly), и вы сохраните обработку Джерси как есть.
<service name="helloWorldResource">
<inbound>
<inbound-endpoint address="jersey:http://localhost:63081/" synchronous="true"/>
</inbound>
<component class="org.mule.transport.jersey.HelloWorldResource"/>
</service>
http://www.mulesoft.org/display/JERSEY/User's+Руководство