Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有桌面、android和ios客户端的java ee应用程序_Android_Ios_Jakarta Ee_Ejb_Restful Architecture - Fatal编程技术网

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

带有桌面、android和ios客户端的java ee应用程序,android,ios,jakarta-ee,ejb,restful-architecture,Android,Ios,Jakarta Ee,Ejb,Restful Architecture,我正在用java enterprise和glassfish构建一个应用程序。客户机和服务器之间的信息通常是少量数据,但客户机有时需要获得更大的资源(通常为1-20 MB)。我仍在规划系统的体系结构,我需要一些关于如何将服务器上的资源公开给多个客户端的建议 最初,我只打算在javaws和glassfish提供的ACC中运行一个桌面客户端应用程序。我将远程接口放在一个单独的jar中,并计划通过调用通过这些接口公开的EJB方法来完成所有客户机-服务器接口。对于java桌面客户端来说,这一切都很好。对于

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

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

在iphone或ipad上运行objective-c,有没有办法调用我的EJB?我当然希望如此

我期望这个解决方案是一个RESTfulWeb服务。据我所知,这是一种通过以通用XML或JSON形式传递数据来松散耦合客户端和服务器应用程序的方法

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

  • 保留我的EJB业务接口,并为通用客户机(iOS和以后可能出现的任何其他对象)实现一个重复的restful接口

  • 为所有客户端创建一个restful接口


  • 第二个似乎是一个更干净的设计,但这意味着我必须放弃我已经完成的工作,学习休息。有经验的人能提供一些建议吗?我会非常感激的

    我建议只修改一下选项2,甚至不用费心创建web服务。
    在EJB3.1中,使用一个返回JSON供Android和iOS使用的普通servlet,您可以以非常简单的方式将业务逻辑公开为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);
        }
    }
    
    路径(“名称”) @无国籍 公共类名称服务{ @EJB 私有名豆名豆; @得到 @生成(“文本/html”) 公共字符串getHtml(){ 返回“Hello”+nameBean.getName()+”; } @放 @消耗(“文本/普通”) 公共void put(字符串内容){ setName(内容); } } 不需要servlet或任何其他委托。对一个逻辑使用各种访问方法是绝对好的,这样一些java客户机使用EJB(RMI),而其他客户机使用REST。将来,如果需要,您甚至可以添加一些新的服务,例如XML web服务,通过异步消息传递等等