2011-08-17 3 views
0

웹 응용 프로그램에 대해 다음과 같은 구성이 있습니다.spring httpinvoker 클라이언트가 서비스 URL을 찾을 수 없습니다.

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> 

나는 클라이언트가 메일 응용 프로그램-context.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> 

사서함-servlet.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 로그에서 나는 http : // {host} /remote/domain/provision.htm에 대한 POST 호출을 추적합니다.

질문 :

  1. 내가 httpInvoker 비트에 대해 별도의 응용 프로그램 컨텍스트를 작성해야합니까? 내 말은, 나는 이미 일반적인 웹 작업을 다루는 웹 컨텍스트가 하나 있다는 것을 의미한다. httpInvoker 기능에 대해 web.xml에서 {another-context}를 선언하고 서비스 구성을 설정해야합니까? {another-context} -servlet.xml에 정의되어 있습니까?

  2. 1이 아니라면 구성에 어떤 문제가 있습니까?

답변

1

위의 질문 1에 답이 첨부되어 있습니다. http-invoking facility가 작동하도록 별도의 웹 컨텍스트를 만들어야합니다.

내 웹 응용 프로그램 컨텍스트 (사서함)에서 적절한 URL을 컨트롤러에 매핑하는 SimpleUrlHandlerMapping이 이미 정의되어 있기 때문입니다. 거기에 정의 할 http-invoker-serivce에 대한 장소를 찾을 수 없습니다. 웹 컨텍스트를 분리하면 매력처럼 작동했습니다! : D

해피 코딩! :)