2015-08-03 4 views
0

Я пытаюсь настроить пользовательскую панель запуска для подключения к серверу ACE Apache, но я не могу найти документацию, которая охватывает этот процесс. Единственное, что я смог найти, это то, что я, видимо, должен использовать Apache ACE Agent, благодаря потоку here. Однако попытка использовать предоставленный код в этом потоке, похоже, не работает. При запуске пусковой установки он либо даже не пытается подключиться к серверу, либо возвращает сообщение об ошибке, которое пытается подключиться к неправильному порту (по умолчанию, а не к порту, о котором я говорю), и не может найти сервер.Подключение к серверу Ace Ace с пользовательским Launcher

Я также видел несколько сообщений, предполагающих, что файл ace-launcher.jar используется, но ничего о том, как его использовать, и документация в вики Apache предполагает, что это автономный файл. Попытка запустить его, пока они показывают here, похоже, не работает, так как не читает аргументы для идентификации/обнаружения/etc. при использовании, как показывает их пример.

Я до сих пор не могу понять, как подключиться к серверу Apache ACE через пользовательскую пусковую установку. Apache ACE server-allinone отлично подходит для моего сервера, но target.jar не позволяет мне (по крайней мере, я видел) указать системные пакеты, которые будут отображаться в рамках OSGi. Может ли кто-нибудь помочь мне разобраться, как настроить мою пусковую установку для подключения к серверу Apache Ace?

import java.io.File; 
import java.net.MalformedURLException; 
import java.util.HashMap; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.Map; 
import java.util.ServiceLoader; 

import org.osgi.framework.Bundle; 
import org.osgi.framework.BundleContext; 
import org.osgi.framework.BundleException; 
import org.osgi.framework.Constants; 
import org.osgi.framework.launch.Framework; 
import org.osgi.framework.launch.FrameworkFactory; 

public class Main { 
    public static void main(String[] args) throws BundleException { 
     File bundlesDir = new File(new File("").getAbsolutePath() + "/bundles/"); 
     FrameworkFactory frameworkFactory = ServiceLoader.load(FrameworkFactory.class).iterator().next(); 
     Map<String, String> config = new HashMap<String, String>(); 
     config.put(Constants.FRAMEWORK_STORAGE, bundlesDir.getAbsolutePath()); 
     config.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "org.w3c.dom.html,..."); // Truncated for readability 
     Framework framework = frameworkFactory.newFramework(config); 
     framework.start(); 

     BundleContext context = framework.getBundleContext(); 
     List<Bundle> installedBundles = new LinkedList<Bundle>(); 
     for (File file : bundlesDir.listFiles()) { 
      if (file.getAbsolutePath().contains(".jar")) { 
       try { 
        installedBundles.add(context.installBundle(file.toURI().toURL().toString())); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
        continue; 
       } 
       System.out.println(file.getName() + " installed."); 
      } 
     } 

     for (Bundle bundle : installedBundles) { 
      System.out.println("Starting: " + bundle.getSymbolicName()); 
      bundle.start(); 
     } 
    } 
} 

Сообщение выход я получаю при попытке запуска агента запуска:

...\test>java -jar org.apache.ace.agent.launcher.felix.jar -v --agent Test --serverurl localhost:9000 
Launching OSGi framework 
- factory:  org.apache.felix.framework.FrameworkFactory 
- properties: {agent.logging.level=DEBUG, agent.identification.agentid=Test, verbose=true, agent.discovery.serverurls=localhost:9000} 
- providers: [AgentBundleProvider, BundleDirBundleProvider] 
- installing: file:/.../test/org.apache.ace.agent.launcher.felix.jar!/org.apache.ace.agent.jar 
[DEBUG] 10:32:53 (controller) Config initialized: update: true, fixPkg: true, syncDelay: 5, syncInterval: 60, maxRetries: 1 
[DEBUG] 10:32:53 (controller) Scheduling controller to run in 5 seconds... 
Startup complete...[DEBUG] 10:32:58 (controller) Controller syncing... 
[DEBUG] 10:32:58 (controller) Synchronizing feedback channels: [auditlog] 
[WARNING] 10:32:59 (discovery) Blacklisting unavailable serverURL: http://localhost:8080 
[WARNING] 10:32:59 (discovery) No valid server URL discovered?! 
[WARNING] 10:32:59 (feedbackChannel(auditlog)) No identification or server URL present, cannot send feedback! 
[DEBUG] 10:32:59 (controller) Feedback send succesfully for channel: auditlog 
[DEBUG] 10:32:59 (controller) Checking for agent updates... 
[DEBUG] 10:32:59 (discovery) Ignoring blacklisted serverURL: http://localhost:8080 
[WARNING] 10:32:59 (discovery) No valid server URL discovered?! 
[WARNING] 10:32:59 (controller) Sync received retry exception from server. Rescheduled in 10 seconds... 
[DEBUG] 10:32:59 (controller) Scheduling controller to run in 10 seconds... 

ответ

0

Позвольте мне объяснить. «Агент» - это пакет, который может быть развернут в любом контейнере OSGi для подключения к серверу ACE. Если вы проверите исходный код из SVN (или загрузите исходный код из последней версии), вы можете найти его в проекте org.apache.ace.agent. Этот комплект можно настроить с помощью различных системных или каркасных свойств.

Чтобы сделать его более удобным для людей, чтобы использовать этот пакет, мы создали проект org.apache.ace.agent.launcher. У нас есть два разных вкуса (см. Сгенерированную папку после создания рабочей области). Первая - это пусковая установка, в которую встроена структура Felix и этот пакет агентов. Вы можете просто запустить его следующим образом:

java -jar org.apache.ace.agent.launcher.felix.jar --help 

Это даст самые важные параметры. Если вы не хотите использовать Felix, вы можете использовать другой артефакт, который позволяет запускать любую фреймворк, находящийся в пути к классам. Так что у вас есть рамки Equinox в файл с именем equinox.jar, вы можете запустить его, как это:

java -cp equinox.jar:org.apache.ace.agent.launcher.base.jar org.apache.ace.agent.launcher.Launcher --help 

Опять же, что выход будет те же параметры.

Что касается вашего выхода, попробуйте:

java -jar org.apache.ace.agent.launcher.felix.jar -v --agent Test --serverurl http://localhost:9000 

URL-адрес сервера вы использовали не имел протокола как часть URL!

+0

Извините за любые уведомления, которые вы можете получить о комментариях, которых нет здесь ... по какой-то причине SO сохраняет авто-добавление моих комментариев, даже несмотря на то, что я не готов их отправить ... По-прежнему пытается создать пару вещей на моем конец основан на том, что вы упомянули. – DGolberg

+0

Хмм, по какой-то причине я не могу изменить URL-адрес сервера с помощью аргументов. Каждый раз, когда я пытаюсь подключиться к своему серверу, он возвращает: ' Черный список недоступен serverURL: http: // localhost: 8080', хотя я пытаюсь подключить его к порту 9000. Строка, которую я использую: 'java -jar org.apache.ace.agent.launcher.felix.jar --serverurl http: // localhost: 9000'. Также не работает с -s вместо -serverurl. – DGolberg

+0

Когда я запускаю его я получаю: Java -jar org.apache.ace.agent.launcher.felix.jar -v --serverurl HTTP: // локальный: 12345 Запуск рамки OSGi - завод: \t org.apache .felix.framework.FrameworkFactory - свойства: \t {agent.logging.level = DEBUG, многословен = верно, agent.discovery.serverurls = HTTP: // локальный: 12345} - провайдеры: \t [AgentBundleProvider, BundleDirBundleProvider] . ..snip ... Так он использует порт, который я указываю, как вы можете видеть на выходе. Я использую «-v» для получения подробного вывода, что помогает в отладке. (форматирование в этих комментариях ужасно) –