나는 맞춤형 서비스에서 REST API 및 호출이 포함 된 OSGi WAB를 Karaf로 개발하려고합니다. 그러나 이상한 이유로 인해 OSGi 프레임 워크는 만족스럽지 못한 기능에 대해 불평합니다 (osgi.component
).해결되지 않은 요구 사항 : osgi.component
나는을 알고 싶습니다 :
- 가 어떻게이 문제를 해결할 수 있습니까?
osgi.component
번들은 무엇입니까? 왜 필요한가?- 왜 maven-bundle-plugin (bnd)이 "Require-Capability"항목에 선언되어 있습니까?
- OSGi 프레임 워크에 설치해야하는 경우 어디에서 찾을 수 있습니까?
몇 가지 추가 정보 :
- karaf 버전 : 4.0.7;
- maven 번들 플러그인 : 3.2.0;
- OS : Windows 10 64bit;
- IDE : Eclipse Neon;
전체 오류 :
Error executing command: Error executing command on bundles: Error starting bundle 96: Unable to resolve com.massimobono.karaf.examples.user-fully-rest [96](R 96.0): missing requirement [com.massimobono.karaf.examples.user-fully-rest [96](R 96.0)] osgi.extender; (&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0))) Unresolved requirements: [[com.massimobono.karaf.examples.user-fully-rest [96](R 96.0)] osgi.extender; (&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))]
매니페스트 파일 :
Manifest-Version: 1.0 Bundle-SymbolicName: com.massimobono.karaf.examples.user-fully-rest Archiver-Version: Plexus Archiver Built-By: massi Bnd-LastModified: 1479908575162 Bundle-ActivationPolicy: lazy Bundle-ManifestVersion: 2 Import-Package: com.massimobono.karaf.examples.user;version="[0.0,1)", com.massimobono.karaf.examples.user.service;version="[0.0,1)",javax.w s.rs;version="[2.0,3)",javax.ws.rs.core;version="[2.0,3)" Require-Capability: osgi.extender;filter:="(&(osgi.extender=osgi.compo nent)(version>=1.3.0)(!(version>=2.0.0)))",osgi.service;filter:="(obj ectClass=com.massimobono.karaf.examples.user.service.UserService)";ef fective:=active,osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" Service-Component: OSGI-INF/com.massimobono.karaf.examples.user.ui.ful lyrest.UserRest.xml Tool: Bnd-3.2.0.201605172007 Originally-Created-By: Maven Integration for Eclipse Export-Package: com.massimobono.karaf.examples.user.ui.fullyrest;uses: ="javax.ws.rs,javax.ws.rs.core";version="0.0.1" Bundle-Name: user-fully-rest Maven Webapp Bundle-Version: 0.0.1.SNAPSHOT Created-By: Apache Maven Bundle Plugin Build-Jdk: 1.8.0_91
나머지 기본 클래스 :
,691,363package com.massimobono.karaf.examples.user.ui.fullyrest; import java.time.LocalDateTime; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import com.massimobono.karaf.examples.user.User; import com.massimobono.karaf.examples.user.service.UserService; import com.massimobono.karaf.examples.user.service.UserServiceException; @Path("user") @Component(immediate=true) public class UserRest { @Reference private volatile UserService userService; @GET @Produces(MediaType.TEXT_HTML) public String getUserNumber() { try { return String.format("<h1>Total users: %d</h1>", this.userService.size()); } catch (UserServiceException e) { return String.format("Couldn't fetch total users because %s", e.getMessage()); } } @PUT @Path("add/{name}/{surname}") @Produces(MediaType.TEXT_HTML) public String add(@PathParam("name") String name, @PathParam("surname") String surname) { try { User u = new User(name, surname, LocalDateTime.now()); this.userService.addUser(u); return String.format("<h1>New user with id %d</h1>", u.getId()); } catch (UserServiceException e) { return String.format("<h1>Couldn't fethc total users because %s</h1>", e.getMessage()); } } @DELETE @Path("remove/{id}") @Produces(MediaType.TEXT_HTML) public String remove(@PathParam("id") int id) { User u; try { u = this.userService.getUser(id); this.userService.removeUser(u); return String.format("<h1>User name=%s surname=%s removed correctly</h1>", u.getName(), u.getSurname()); } catch (UserServiceException e) { return String.format("<h1>Couldn't remove user because %s</h1>", e.getMessage()); } } }
일부 코드는 추가 정보를 제공합니다210
모든 종류의 답장을 보내 주셔서 감사합니다.
답변보기 : http://stackoverflow.com/a/40611246/448551 –
나는 30 분 동안 비슷한 대답을 찾고 있었다.중복 된 질문에 대해 유감스럽게 생각합니다. – Koldar