Есть ли общий способ указать контекстный корень для WebService? - PullRequest
0 голосов
/ 18 января 2012

Я новичок в написании веб-сервисов и пытаюсь понять, как указать корневой контекст.

Мой класс помечен

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

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

Спасибо!

Эрик

1 Ответ

0 голосов
/ 16 августа 2012

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

...