我有以下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调用。
问题:
我是否需要为httpInvoker位创建单独的应用程序上下文?我的意思是,我已经有一个Web上下文来处理正常的Web操作。我是否需要在web.xml中为httpInvoker工具声明{another-context}并具有服务配置。在{another-context} -servlet.xml中定义?
如果不是1,我的配置有什么问题?
答案 0 :(得分:1)
知道了......上面的问题1附有答案。我需要为http-invoking工具创建一个单独的Web上下文。
这是因为,在我的正常webapp上下文(邮箱)中,我已经定义了SimpleUrlHandlerMapping,它将适当的URL映射到控制器。在那里它找不到我想要定义的http-invoker-serivce的地方。当我分离网络环境时,它就像一个魅力! :d
快乐的编码! :)