gpt4 book ai didi

Android 应用程序使用 OSGi 与服务器通信

转载 作者:行者123 更新时间:2023-11-28 23:41:12 25 4
gpt4 key购买 nike

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

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

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

我看到了这个链接-

Trouble understanding the whole OSGi web eco system

他们在这里谈论 web 容器如何是 Tomcat/Jetty。这告诉我服务器上需要 Tomcat 和 Felix。我说得对吗?我还读到了 Jetty 被嵌入到 Felix 中。但我无法连接点。

请引导我朝着正确的方向前进..

最佳答案

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 的最简单方法。

关于Android 应用程序使用 OSGi 与服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19415481/

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