Java 在Felix中启动并运行CXF(JAX-RS)Web资源的最低要求是什么?

Java 在Felix中启动并运行CXF(JAX-RS)Web资源的最低要求是什么?,java,osgi,cxf,apache-karaf,apache-felix,Java,Osgi,Cxf,Apache Karaf,Apache Felix,我想在OSGI中启动和运行(特别是运行ApacheFelix的ApacheKaraf) 作为一个例子,我看到工程师做出了一个设计决策,将。运行时两者之间是否存在依赖关系?是使用了一些技巧(例如来自环境:OSGiHTTP服务)来监听入站连接,还是仍然需要?也许我的问题可以用文件的解释来回答。它到底是从哪里来的?它是否总是得到一个,或者它是否依赖于 我看了一下这些测试,它们似乎使用iPojo或声明性服务(我很难区分它们之间的区别!)来减少锅炉板代码,但这是以理解为代价的(因为它需要比我目前所拥有的更

我想在OSGI中启动和运行(特别是运行ApacheFelix的ApacheKaraf)

作为一个例子,我看到工程师做出了一个设计决策,将。运行时两者之间是否存在依赖关系?是使用了一些技巧(例如来自环境:OSGiHTTP服务)来监听入站连接,还是仍然需要?也许我的问题可以用文件的解释来回答。它到底是从哪里来的?它是否总是得到一个,或者它是否依赖于

我看了一下这些测试,它们似乎使用iPojo或声明性服务(我很难区分它们之间的区别!)来减少锅炉板代码,但这是以理解为代价的(因为它需要比我目前所拥有的更深入的知识)

关于这个主题,官方的CXF文档并不理想

我的理解是,它归结为:

  • 用JAX-RS注释注释的web资源文件,用于将入站调用映射到本地函数
  • CXF运行时(一些注册服务,管理从接收调用到返回序列化信息的生命周期)
  • 服务器(JavaServlet或其为给定端口生成线程的抽象)
这一切在OSGI中是如何发挥作用的?我还应该提到,我对Gradle最为熟悉,Maven pom.xml文件可能包含我不认识的内容

我不喜欢被接受的答案,因为它是特定于的,我不想使用它,因为它依赖于XML。我在这里寻找一个技术答案来解释CXF和OSGI之间的关系(如

相关的:


首先,简要回顾一下OSGi:

  • OSGi是一个需要实现的规范
  • Felix/Equinox是karaf中的两个实现(请参阅etc/config.properties,使用属性karaf.framework检查您使用的实现,您可以更改它!)
  • Karaf是一个管理工具,它将在您发出的每个命令后面使用Felix/Equinox。通常,这些命令被代理到OSGi为Felix/Equinox实现定义的相应行为
  • 因此,无论您的背景如何,与Blueprint关联的解决方案仍然是正确的。然而,如果您不喜欢Blueprint,您可以检查您在“spring/Blueprint”世界中定义的每个“bean”将在何处变成@Service/@Reference(对于OSGi的原始思维方式来说更纯粹),或者如果您习惯于更经典的@Named/@Inject思维方式,则使用更直观的方式


    但最终,原则是完全相同的:您希望让一台服务器在运行时将自身注册到CXF总线(通常您不应该在捆绑包中声明,您可以使用默认的),并让您的服务在服务器中注册自身。

    首先,简要回顾一下OSGi:

  • OSGi是一个需要实现的规范
  • Felix/Equinox是karaf中的两个实现(请参阅etc/config.properties,使用属性karaf.framework检查您使用的实现,您可以更改它!)
  • Karaf是一个管理工具,它将在您发出的每个命令后面使用Felix/Equinox。通常,这些命令被代理到OSGi为Felix/Equinox实现定义的相应行为
  • 因此,无论您的背景如何,与Blueprint关联的解决方案仍然是正确的。然而,如果您不喜欢Blueprint,您可以检查您在“spring/Blueprint”世界中定义的每个“bean”将在何处变成@Service/@Reference(对于OSGi的原始思维方式来说更纯粹),或者如果您习惯于更经典的@Named/@Inject思维方式,则使用更直观的方式

    但归根结底,这是完全相同的原则:您希望让一台服务器在运行时将自己注册到CXF总线(通常您不应该在捆绑包中声明,您可以使用默认的),并让您的服务在服务器中注册自己