【问题标题】:Android App talking to server using OSGiAndroid 应用程序使用 OSGi 与服务器通信
【发布时间】:2013-10-25 06:42:41
【问题描述】:

我是 OSGi 的新手。我的要求是让一个 Android 应用程序与 OSGi 框架上的服务器通信。

我将 Apache Felix 视为容器。据我了解,Felix 上会安装一些捆绑软件,它们可以从程序本身启动和停止。

我设法在 android 端创建捆绑包并启动它。 但是,我无法清楚地了解服务器端的 OSGi。 android 应用程序使用 Http 请求和响应与服务器通信。 如果服务器上只有 Apache Felix,我能处理 Http 请求吗? 我也需要 Tomcat 吗?

我看到了这个链接-

Trouble understanding the whole OSGi web eco system

他们在这里谈论 Web 容器是如何成为 Tomcat/Jetty 的。这告诉我我需要在服务器上安装 Tomcat 和 Felix。我说得对吗? 我还阅读了有关 Jetty 嵌入到 Felix 中的信息。但我无法连接这些点。

请引导我正确的方向..

【问题讨论】:

标签: android tomcat osgi apache-felix


【解决方案1】:

OSGi 的首选模型是在服务注册表中注册一个 Servlet 服务。这个 servlet 应该由安装在该框架上的 Http 服务器获取。该模型将在不久的将来成为标准模型,但已被 Apache Felix 支持。这就是你在 bnd(tools) 中的制作方法:

bnd.bnd
  -runfw: org.apache.felix.framework;version='[4,5)'
  -runbundles: \
    org.apache.felix.configadmin;           version=1.6.0, \
    org.apache.felix.log;                   version=1.0.1, \
    org.apache.felix.scr;                   version=1.6.0, \
    org.apache.felix.http.jetty;            version=2.2.0, \
    org.apache.felix.http.whiteboard;       version=2.2.0

如果它正在运行,您可以像这样使用声明式服务编写一个 servlet:

  @Component(provide=Servlet.class,properties="alias=/hello") // makes it available on /hello 
  public class MyAndroidServer extends HttpServlet {
    public void doGet(HttpServletRequest rq, HttpSerletResponse rsp) throws IOException {
      rsp.getWriter().println("Hello World");
    }
  }

如果你从 bndtools 开始,它应该很容易让它工作。据我所知,这是在 OSGi 环境中使用 servlet 的最简单方法。

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多