Служба OSGi REST не работает (инструмент bnd)
Я пишу сервис REST в соответствии с руководством Amdatu, это довольно просто, но оно выдает ошибку. Я добавил все зависимости, но все еще получаю сообщение об ошибке.
Вот сообщение об ошибке
! could not resolve the bundles
! Failed to start bundle org.apache.felix.http.whiteboard-2.3.0, exception Unresolved constraint in bundle org.apache.felix.http.whiteboard [13]: Unable to resolve 13.0: missing requirement [13.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet)(version>=3.0.0)(!(version>=4.0.0)))
! Failed to start bundle org.amdatu.web.rest.wink-1.0.8, exception Unresolved constraint in bundle org.amdatu.web.rest.wink [14]: Unable to resolve 14.0: missing requirement [14.0] osgi.wiring.package; (&(osgi.wiring.package=org.codehaus.jackson.jaxrs)(version>=1.9.0)(!(version>=2.0.0)))
! Failed to start bundle org.apache.felix.http.jetty-2.3.0, exception Unresolved constraint in bundle org.apache.felix.http.jetty [15]: Unable to resolve 15.0: missing requirement [15.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet)(version>=3.0.0)(!(version>=4.0.0)))
____________________________
Welcome to Apache Felix Gogo
g!
Вот реализация
package web.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("hellorest")
public class HelloWorldResource {
@GET
@Produces(MediaType.TEXT_HTML)
public String say_hello() {
return "hello";
}
}
Вот класс Activator
package web.rest;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
public class Activator extends DependencyActivatorBase{
@Override
public void destroy(BundleContext arg0, DependencyManager arg1)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void init(BundleContext arg0, DependencyManager manager)
throws Exception {
manager.add(createComponent()
.setInterface(Object.class.getName(),null)
.setImplementation(HelloWorldResource.class));
}
}
Я добавил их для построения зависимостей
Это зависимости Run
Если вы попросите меня изменить пакет сервлета на 3.0, я отвечу на некоторые другие вопросы, требующие обслуживания. Servlet
версия должна быть меньше 3.0, теперь я не могу выполнить их одновременно.
1 ответ
Решение
Проблема в вашей конфигурации 'run bundles':
- замените пакет javax.servlet на org.apache.felix.http.servlet-api. Он содержит пакет javax.servlet в соответствующих версиях.
- Добавьте также пакет Джексона-Джакрса
Оба пакета также доступны в репозитории Amdatu Dependencies.