Весной клиент httpinvoker не может найти сервисный URL - PullRequest
0 голосов
/ 17 августа 2011

У меня есть следующая конфигурация для веб-приложения.

web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:mail-application-context.xml
....
    </context-param>
....
<servlet> 
<servlet-name>mailbox</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mailbox</servlet-name>
        <url-pattern>*.htm</url-pattern>
</servlet-mapping>

mailbox-servlet.xml

    <bean name="remoteProvisioningServiceImpl" class="pw.domain.service.RemoteProvisioningServiceImpl"/>

<bean name="/remote/domain/provision.htm" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
    <property name="service" ref="remoteProvisioningServiceImpl" />
    <property name="serviceInterface" value="pw.domain.service.RemoteProvisioningService" />
</bean>

У меня настроены клиенты, как показано ниже, в mail-application-context.xml

    <bean id="remoteProvisioningService1" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl" value="http://${mailapp.dc.host.1.url}/remote/domain/provision.htm" />
    <property name="serviceInterface" value="pw.domain.service.RemoteProvisioningService" />
</bean> 

<bean id="remoteProvisioningService2" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl" value="http://${mailapp.dc.host.2.url}/remote/domain/provision.htm" />
    <property name="serviceInterface" value="pw.domain.service.RemoteProvisioningService" />
</bean> 

А теперь ... проблема.В подходящем случае клиенты по праву обращаются в службу поддержки через средство httpinvoker, но ответом является http-404.В журналах nginx я прослеживаю, что Spring делает POST-вызов http://{host}/remote/domain/provision.htm.

Вопросы:

  1. Нужно ли создавать отдельный контекст приложения для бита httpInvoker?я имею в виду, у меня уже есть один веб-контекст, чтобы иметь дело с обычными веб-операциями.Нужно ли мне объявлять {other-context} в web.xml для средства httpInvoker и с настройкой службы.определено в {another-context} -servlet.xml?

  2. Если не 1, что не так в моей конфигурации?

1 Ответ

1 голос
/ 18 августа 2011

Понял .. Вопрос 1 выше имеет прикрепленный ответ. Мне нужно создать отдельный веб-контекст для работы http-invoking.

Это потому, что в моем обычном контексте веб-приложения (почтового ящика) я уже определил SimpleUrlHandlerMapping, который отображает соответствующие URL-адреса для контроллеров. Там он не находит места для http-invoker-serivce, который я хочу определить. Когда я разделил веб-контексты, это работало как шарм! : D

Удачного кодирования! :)

...