【问题标题】:OSGi Remote DS product configuration works only inside EclipseOSGi Remote DS 产品配置仅适用于 Eclipse
【发布时间】:2012-01-13 19:39:37
【问题描述】:

我正在使用 Java JDK 1.6、Windows XP SP3 开发 Eclipse STS 2.7.2。我在需要身份验证的代理后面工作。

我编写了两个使用 DS 和 Zookeeper 发现的简单客户端和服务器插件。它们指的是捆绑在第三个插件中的 IHello 接口。

服务器发布一个简单的 Hello 服务,当在 192.16.23.28:6666/hello 上调用时返回字符串“hello”并使用 VM 参数启动 Zookeper

-Dzoodiscovery.dataDir=bla
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3030;clientPort=3031

xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="NOLINKALLOWED" name="it.eng.test.remote.ds.helloservice">
<implementation class="it.eng.test.remote.ds.helloservice.HelloService"/>
<property name="service.exported.interfaces" type="String" value="*"/>
<property name="service.exported.configs" type="String" value="ecf.generic.server"/>
<property name="ecf.exported.containerfactoryargs" type="String" value="ecftcp://192.168.23.28:6666/hello"/>
<service>
<provide interface="it.eng.test.remote.ds.hello.IHello"/>
</service>
</scr:component>

客户端使用 VM 参数启动 Zookeeper

-Dzoodiscovery.autoStart=true
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3031;clientPort=3030

在这两种情况下,OSGi 框架都以 -console -consoleLog -clean 参数启动。

然后,我为服务器和客户端创建了两个独立的运行配置(运行方式->运行配置..),添加了所有必需的包(最重要的是:org.eclipse.ecf.provider.remoteserviceorg.eclipse.ecf.provider.zookeeper)及其依赖项。

基于该配置,我为客户端和服务器定义了两个独立的产品配置(新建->产品定义->选择运行配置)。

现在,如果我通过单击相应产品配置中的“启动 Eclipse 应用程序”链接来运行它们,一切正常。服务器发布服务,客户端获取它并在输出中显示“Hello”。 netstat -a | grep 6666 表示有人正在监听该端口,netstat -a | grep 30 表示正在使用端口 3030 和 3031。

Eclipse 已配置为正确使用我的代理。

如果我根据上述配置将它们导出为 Eclipse 产品(导出->eclipse 产品->选择产品配置),我会得到两个文件夹:客户端和服务器。

其中包含在外部 OSGi 框架内运行应用程序所需的一切,包括框架 (config.ini) 和 VM (eclipse.ini) 的配置文件。

应用程序以STS.exe -console 启动,这将打开一个 OSGi 控制台,其中安装并启动了所有必需的捆绑包。

启动服务器工作,我看到有人在监听 6666,zookeeper 报告服务已经发布。

如果我启动客户端,什么都不会发生。没有输出,3030 和 3031 上没有连接,没有错误。它什么也没做,但是 zookeeper 说它已经开始发现了。

使用 localhost 而不是我的 IP 没有任何改变,它仍然可以在 Eclipse 内部工作,但不能在外部工作。

【问题讨论】:

  • 请把你的答案变成下面的真实答案。您可以在两天后将其标记为已接受。这将使问题从未回答的问题标签中消失。
  • 完成,谢谢提示
  • 太棒了!我已从您的问题中删除了答案。

标签: eclipse export osgi apache-zookeeper


【解决方案1】:

导出的应用程序的配置存储在:./eclipse.ini 中,OSGi 框架配置在 ./configuration/config.ini 中

eclipse.ini 包含 Java VM 所需的参数以供 zookepeer 工作:

-consoleLog
-console
-clean
-vmargs
-Declipse.ignoreApp=true
-Dosgi.noShutdown=true
-Dzoodiscovery.autoStart=true;
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:3031;clientPort=3030

启动应用程序正常,但未读取该文件。

手动启动应用程序:

java -Dzoodiscovery.autoStart=true; -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3031;clientPort=3030 -jar org.eclipse.osgi_3.7.0.v20110613.jar -console -configuration c:\temp\zooc\configuration\

来自所有 jar 的 ./plugins 中。

猜测 Eclipse 自动生成的 .exe 没有很好地配置为读取其配置文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多