Проблемы со сборкой сервлета с использованием Apache Felix Whiteboard (OSGi)

Я пытаюсь построить сервлет с помощью BndTools. Я следовал этому руководству: http://www.ralfebert.de/archive/java/osgi_server/

Но.. Я не могу заставить работать сервлет:(. Проблема в том, что пакет белой доски apache felix выдает сообщение об отладке: Игнорирование службы сервлета [javax.servlet.Servlet], псевдоним отсутствует или пуст

Я часами гуглял, но не могу получить ответы на эту проблему. Когда я пытаюсь получить доступ к localhost:8080, я получаю следующее сообщение:

Проблема с доступом /. Причина:

NOT_FOUND

Вот код моего сервлета:

package com.example.helloworld;

import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.*;

import aQute.bnd.annotation.component.Component;

@Component(provide=Servlet.class, properties = { "alias=/" })
public class HelloWorldServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.getWriter().append("Hello World!");
    }

}

Что мне не хватает или я что-то не так делаю??

Вот источник моего файла bnd.bnd:

-buildpath: osgi.core,\
    osgi.cmpn,\
    biz.aQute.bnd.annotation,\
    junit.osgi,\
    org.apache.felix.http.jetty
-sub: *.bnd
-runfw: org.apache.felix.framework;version='[4.0.3,4.0.3]'

И поскольку я использую более позднюю версию BndTools, я больше не могу управлять всем в файле.bnd. Так вот источник моего файла run.runbnd также:

-runfw: org.apache.felix.framework;version='[4,5)'
-runee: JavaSE-1.6
-runsystemcapabilities: ${native_capability}

-resolve.effective: active



-runrequires: osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.runtime)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.http.jetty)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.webconsole)',\
    osgi.identity;filter:='(osgi.identity=org.apache.felix.http.whiteboard)'
-runbundles: org.apache.felix.gogo.command,\
    org.apache.felix.gogo.runtime,\
    org.apache.felix.gogo.shell,\
    osgi.cmpn,\
    org.apache.felix.http.jetty,\
    org.apache.felix.http.whiteboard,\
    com.example.helloworld.org.example;version=latest

1 ответ

Решение

Вам необходимо добавить пакет, предоставляющий среду выполнения сервисных компонентов декларативных сервисов, в вашу конфигурацию запуска. Пакет называется org.apache.felix.scr и может быть найден в репозитории Bndtools Hub в представлении репозитория.

Вы отлично настроили свой компонент, но вам нужен комплект SCR для фактической обработки конфигурации во время выполнения.

Другие вопросы по тегам