【问题标题】:Spring remoting and restful urlsSpring远程处理和restful url
【发布时间】:2015-05-25 19:39:29
【问题描述】:

我有一个正在运行的应用程序,它使用 Spring 远程处理 HttpInvoker 公开服务。

我在 web.xml 中有这个定义:

<servlet>
    <servlet-name>remoting</servlet-name>
    <servlet class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

服务出口商:

<bean name="/AccessMgtService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
    <property name="service" ref="employeeService"/>
    <property name="serviceInterface" value="com.xxx.service.EmployeeService"/>
</bean>

在客户端:

<bean id="remoteAccessService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl" value="http://localhost:8180/HRManRemote/remoting/EmployeeService"/>
    <property name="serviceInterface" value="com.xxx.service.EmployeeService"/>
</bean> 

我现在已经向我的 HRManRemote 应用程序添加了一个 Restful 服务。

我有一个这样的请求映射:

@Controller
public class EmployeeController {

@RequestMapping(value="/rest/employees", method=RequestMethod.GET)
@ResponseBody List<Employee> getEmployees() {
...

}

我对 URL 模式有疑问。我不知道应该使用什么 url 来调用 Rest 服务。

http://localhost:8180/HRManRemote/remoting/rest/employees也不是

也不是http://localhost:8180/HRManRemote/rest/employees

工作。服务器告诉我没有为这个 url 定义资源

你认为我应该使用什么网址? 我应该使用不同的请求映射吗?

在此先感谢

吉尔

【问题讨论】:

    标签: java spring rest spring-mvc


    【解决方案1】:

    编辑您的调度程序 servlet 映射如下:

    <servlet-mapping>
        <servlet-name>remoting</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    并从浏览器中点击http://localhost:8180/HRManRemote/rest/employees,并确保在您的spring配置文件中扫描EmployeeController

    【讨论】:

    • 谢谢。我会测试它。但是,既然远程处理来自 web.xml,我应该如何调用我的 HttpInvoker?我应该从 HttpInvoker 调用中删除远程处理吗?
    【解决方案2】:

    我希望得到以下结果:http://localhost:8180/HRManRemote/remoting/AccessMgtService/rest/employees

    我假设您的站点名为 HRManRemote 并且您绑定到端口 8180?如果是这样,那么远程处理来自 web.xml,AccessMgtService 来自 bean 配置,其余来自 Controller

    【讨论】:

    • 我看到了 Arpit 的回答。一定要确保组件扫描在你的 spring 配置中,所以它会选择它。
    • 谢谢。我会尝试这两种解决方案,并会让你知道。在您提出的 url 中,AccessMgtService 是 http 调用者调用的服务的名称。
    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2013-12-17
    相关资源
    最近更新 更多