【问题标题】:Alternative to REST when passing objects between servers在服务器之间传递对象时替代 REST
【发布时间】:2014-09-30 12:29:54
【问题描述】:

我有一个 spring-mvc 项目作为前端项目。我的数据源由第二个 javaee 项目访问。通过提供 REST 服务,该后端可以访问我的前端所需的所有数据。 REST 服务通过返回 XML 来提供对象。然后这个 XML 将被我的前端编组

所以当我的前端项目需要当前数据时,我会创建一个HttpUrlConnection,然后调用后端的 REST-Service。

例如我想获取所有电影对象的集合:

URL url = new URL(URLSAFE.REST_ALL_MOVIES);
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();
                connection.setDoOutput(true);
                connection.setInstanceFollowRedirects(false);
                connection.setRequestMethod("GET");
                connection.setRequestProperty("Content-Type", "application/xml");
                connection.getResponseCode();

                InputStream is = connection.getInputStream();
                Source sauce = new StreamSource(is);
                JAXBContext jaxbContext = JAXBContext.newInstance(Movies.class);
                Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

                JAXBElement<Movies> e = unmarshaller.unmarshal(sauce, Movies.class);
                Movies m = e.getValue();
                this.MOVIELIST = m;
                connection.disconnect();

在为日志服务添加了一些远程 ejb 查找之后,我想到了使用 rmi 传递对象的想法。但是我了解到我无法将对象投射到我的前端,并且本地对象和您通过 rmi 访问的对象之间存在很大差异。

但是在服务器之间传递对象的一个​​好的尝试是什么?我需要将对象传递给前端,因为我必须将它们与 JSP 一起使用。

【问题讨论】:

  • 你在java环境中:docs.oracle.com/javaee/7/tutorial/doc/jaxrs-client.htm#BABEIGIH你不需要做你正在为一个rest-application做的事情
  • 您必须传递对象的初始假设是错误的。通过网络传递对象是一个糟糕的主意,任何不幸做 DCOM 或 CORBA 的人都会告诉你。
  • 但是在 spring-mvc 前端和数据源之间放置一个后端是不是一个糟糕的主意?

标签: rest spring-mvc ejb jndi rmi


【解决方案1】:

我建议看看这个Spring.io guide。使用 RestTemplate 可以删除示例中的大量样板,并将 REST 资源映射到 POJO。 XML 不应该成为任何障碍,因为 Spring 应该极大地帮助您抽象它。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2020-06-07
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2015-09-10
    相关资源
    最近更新 更多