2012-01-17 4 views
0

Я новичок в написании веб-сервисов и борюсь с пониманием того, как указать корень контекста.Существует ли общий способ определения контекстного корня для WebService?

Я получил мой класс с аннотацией

@Service 
@javax.jws.WebService(endpointInterface= "com.domain.clientservices.lendingsimulation.model.v1.LendingSimulationServicePortType", targetNamespace="http://www.domain.com/ClientServices/LendingSimulation/V1.2", serviceName="LendingSimulationService", portName="LendingSimulationServicePort") 

, но я не уверен, как настроить контекстный корень/путь для него. Я читал, что могу настроить его как сервлет в web.xml, но это похоже на веб-службу, которая не является аннотацией. Я ошибаюсь? Я попробовал следующую конфигурацию в web.xml:

<servlet> 
    <description>This is the description for the LendingSimulation Service</description> 
    <display-name>Lending Simulation Service</display-name> 
    <servlet-name>LendingSimulationService</servlet-name> 
    <servlet-class>com.domain.clientservices.lendingsimulation.service.LendingSimulationServiceImpl</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>LendingSimulationService</servlet-name> 
    <url-pattern>/WebService</url-pattern> 
</servlet-mapping> 

Однако, когда я запускаю в JBoss, я получаю сообщение об ошибке: Сообщ

17:39:33,710 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/LendingSimulationService].[LendingSimulationService]] (http--127.0.0.1-8080-2) Allocate exception for servlet LendingSimulationService: java.lang.ClassCastException: com.domain.clientservices.lendingsimulation.service.LendingSimulationServiceImpl incompatible with javax.servlet.Servlet 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1156) [jbossweb-7.0.1.Final.jar:7.0.2.Final] 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final] 
... (omitted for brevity) 

Я прочитал, что я могу настроить JBoss-сеть .xml, но я предполагаю, что существует более общий способ сделать это, который можно применить ко всем серверам приложений - не так ли? Или я должен настроить службу самостоятельно, в зависимости от AS, к которой я развертываю (например: один способ для Tomcat, один способ для GlassFish, один способ для JBoss, один из способов для WebSphere и т. Д.).

Есть ли аннотация, которую я могу использовать, чтобы указать мой путь к веб-сервису? Или параметр конфигурации в файле web.xml?

Спасибо!

Эрик

ответ

0

Оказывается, что ошибка JBoss я получаю было связано с веб-сервисов модуль не включены. В JBoss7.0/7.1 вам нужно запустить конфигурацию standalone-preview.xml, чтобы получить веб-службы для загрузки из коробки: например, standalone.sh --server-config = standalone-preview.xml. Это исключило исключение ClassCast/Servlet. Однако мой вопрос по-прежнему остается, если нет лучшего/другого способа выполнить это (возможно, через аннотации), чем объявить его сервлетом в web.xml.

+0

Здравствуйте @Eric, пожалуйста, подробно расскажите, как вы решили эту проблему? так вот что такое standalone-preview.xml? Вы запустили скрипт с этими аргументами? Я вообще не вижу файл preview.xml? Можете ли вы подробно рассказать о своем ответе. – ROCKY

+1

@ROCKY - Я год назад, я точно не помню решение, но я помню, что общая загрузка JBoss (с настройкой xml-сервера по умолчанию) не позволяла веб-сервисам для jBoss. Следовательно, переход к конфигурации standalone-preview.xml позволил создать необходимый стеки webservices и затем смог правильно разобрать аннотацию '@ WebService'. Если я правильно помню, файлы конфигурации xml изменились в 7.1 - это, возможно, было вызвано чем-то другим. Я думаю, что использовал JB 7.0RC или 7.0Release. Попробуйте загрузить эти pkgs и посмотреть, можете ли вы найти автономный предварительный вариант конфигурации. –

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