0

我对 Web 应用程序有以下配置。

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>

邮箱-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 对 http://{host}/remote/domain/provision.htm 进行了 POST 调用。

问题 :

  1. 我需要为 httpInvoker 位创建一个单独的应用程序上下文吗?我的意思是,我已经有一个 Web 上下文来处理正常的 Web 操作。我是否需要在 web.xml 中为 httpInvoker 设施声明 {another-context} 并进行服务配置。在 {another-context}-servlet.xml 中定义?

  2. 如果不是 1,我的配置有什么问题?

4

1 回答 1

1

明白了.. 上面的问题 1 附有答案。我需要为 http 调用工具创建一个单独的 Web 上下文才能工作。

这是因为,在我的普通 webapp 上下文(邮箱)中,我已经定义了 SimpleUrlHandlerMapping,它将适当的 url 映射到控制器。那里找不到我想定义的 http-invoker-service 的位置。当我分离网络上下文时,它就像一个魅力!:D

快乐编码!:)

于 2011-08-18T14:34:55.763 回答