gpt4 book ai didi

android - 带有桌面、android 和 ios 客户端的 java-ee 应用程序

转载 作者:可可西里 更新时间:2023-11-01 05:24:24 25 4
gpt4 key购买 nike

我正在使用 java enterprise 和 glassfish 构建一个应用程序。客户端和服务器之间的信息通常是少量数据,但有时客户端需要获取更大的资源(通常为 1-20 MB)。我还在规划系统的架构,我需要一些关于如何将服务器上的资源暴露给多个客户端的建议。

最初我只打算在 javaws 和 glassfish 提供的 ACC 中运行一个桌面客户端应用程序。我将远程接口(interface)放在一个单独的 jar 中,并计划通过调用通过这些接口(interface)公开的 EJB 方法来完成所有客户端服务器接口(interface)。对于 Java 桌面客户端来说,这一切都很好。对于 Android 客户端来说,它甚至应该非常容易。但我不认为它对 ios 来说会那么容易。

有什么方法可以从在 iphone 或 ipad 中运行的 objective-c 调用我的 EJB?我当然希望如此。

我预计解决方案是 RESTful Web 服务。据我了解,这是一种通过以通用 XML 或 JSON 格式传递数据来松耦合客户端和服务器应用程序的方法。

很抱歉,如果我遗漏了一些非常明显的东西,但似乎有两条路线可以从这里开始:

  1. 保留我的 EJB 业务接口(interface)并为通用客户端(iOS 和以后可能出现的任何其他内容)实现一个重复的 RESTful 接口(interface)。

  2. 为所有客户端创建一个 restful 接口(interface)。

数字 2 似乎是一个更简洁的设计,但这意味着我必须放弃已经完成的工作并学习休息。有更多经验的人可以提供一些建议吗?我将不胜感激。

最佳答案

在 EJB 3.1 中,您可以通过一种非常简单的方式将业务逻辑作为 RESTful 服务公开,例如:

@Path("name")
@Stateless
public class NameService {
@EJB
private NameBean nameBean;

@GET
@Produces("text/html")
public String getHtml() {
return "<h2>Hello "+nameBean.getName()+"</h2>";
}

@PUT
@Consumes("text/plain")
public void put(String content) {
nameBean.setName(content);
}
}

不需要 servlet 或任何其他委托(delegate)。对一种逻辑使用多种访问方法绝对没问题,这样一些 Java 客户端使用 EJB (RMI) 而其他客户端使用 REST。将来您甚至可以根据需要添加一些新的,例如XML 网络服务,通过异步消息等。

关于android - 带有桌面、android 和 ios 客户端的 java-ee 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com