java-ee应用程序与桌面,android和ios客户端

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

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

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

我希望解决scheme是一个RESTful Web服务。 根据我的理解,这是通过以通用的XML或JSONforms传递数据来松散地耦合客户端和服务器应用程序的一种方式。

对不起,如果我失去了非常明显的东西,但似乎有两条路线从这里:

  1. 保持我的EJB业务接口,并为通用客户端(iOS和其他可能出现的任何其他内容)实现重复的平稳接口。

  2. 为所有客户创build一个平稳的界面。

2号似乎是一个更清洁的devise,但这意味着我必须放弃已经完成的工作,并了解rest。 有更多经验的人可以提供一些build议吗? 我将非常感激。

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

@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); } } 

不需要servlets或任何其他代表。 对一个逻辑有各种访问方法是绝对好的,以便一些Java客户端使用EJB(RMI),而其他的使用REST。 在未来,如果需要,您甚至可以添加一些新的,例如XML Web服务,通​​过asynchronous消息传递等等。

我会build议选项2一个修改,甚至不打扰创build一个Web服务。 使用返回JSON的普通的servlet被Android和iOS使用

Interesting Posts