Android可以远程调用EJB吗?

请问安卓可以远程访问EJB吗?如果可以的话就好了,就不用重新做接口了。

技术上肯定允许,因为远程调用本身只是一个网络通信过程,这跟 HTTP 通信没有什么本质的差别,仅仅是协议内容不同。


一般来说远程系统互操作尽量是松耦合的,就是不需要知道对方系统是如何设计的,双方只需要用相同的接口就可以了,那么 EJB 这个东西是 Java 特有的,但我们已知 EJB 至少在 EJB 2.0 以后我们跟 CORBA 就已经是兼容的,就是说对方用 CORBA 的方式调用也会是正常的,我们可以拿 EJB 的2个远程接口(Home 和 Biz)来生成 CORBA 的 Stub,然后用 CORBA 方式调用(这就不依赖于 EJB 的运行时库,我想你肯定不打算把一个 WebSphere 或 JBOSS 这样的EJB服务器的客户端运行库复制到手机上吧?很麻烦的,而且还受版本变化影响)。

一般来说手机上的 Java API  比如 Android 本身是不支持 EJB 的,很多像 javax.rmi 这样的包都没有,我找了 Android level 19 的 android.jar 看了,里面的包没有像 javax.rmi, javax.ejb 这样企业应用API (这些是 J2EE的标准API,手机应该是不会提供的)。


通过 RMIC 是可以生成 CORBA Stub 可以用:

C:\>rmic -iiop
C:\>rmic -idl


除了 CORBA 之外,我们可以让开发人员给现有的 EJB 提到一个 SOAP 方式的 Web Service 接口,这在 EJB 2.1 中已经有支持,现在的服务器基本上也支持 EJB 2.0 和 2.0 以上的版本了,拿着这个 EJB 的 WSDL 我们就可以用 Web Service 方式来处理了,这样其实我们可以用 JavaScript 来编码 xml 和解码 xml 来调用远程 Web Service,这种方式更通用,不需要任何  API 库的支持,我们至少可以把它当成最原始的 xml 文档,甚至是纯 text 文件来处理(连xml API 库都不是必须的)。让一个现有 EJB 支持 SOAP 其实不用改动代码,基本上只是一个”添加一个新接口然后重新编译并部署”的过程(比如我用IBM试用版的RAD 7配置WebSphere 就是这样的,如果用便宜的服务器这些工具可能不够自动化)。


只是 android.jar 本身也不提供 CORBA 支持,这也是企业应用,我们最方便的方法还是 SOAP / Web 服务的方式,因为 android 自带了 XML API,如果你的手机应用是基于 phonegap 的,那就更方便和自然快捷了,因为它们现成的 ajax api 来处理 web 服务。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-29
我路过 我酱油
第2个回答  2014-07-29
我也想知道,有高手不
相似回答