2017-05-12 8 views
0

cxf 및 JBoss Fuse로 REST 서비스를 만드는 방법을 배우려고합니다. 서버에 서비스를 성공적으로 설치 한 후에 설치된 cxf 서비스의 목록을보고 "No services has were found"라는 표현을 얻으려고합니다. 어떤 사람들은 왜 서비스가 나타나지 않고 어떻게 보여줄 수 있는지 알고 있습니다. 내가 테스트로 사용하고 코드는 org.apache.cxf CXF-HTTP-기본 받는다는 프로젝트에서 시작,이 튜토리얼 https://www.tutorialspoint.com/jboss_fuse/jboss_fuse_rest_web_services.htm의 하나입니다프로젝트 cxf가 JBoss Fuse에 설치되었지만 여전히 "서비스가 없습니다"

편집 1 : 내가 설치 Abolfazl의 도움을 재 작성 가이드를 다음과 후 다시 시작했다. 이번에는 OSGI 일 : 목록 로그를하는 동안 나는

[ 320] [Active  ] [Failure  ] [  ] [ 80] mvn:com.tuts.abhinav/rest-service/1.0-SNAPSHOT 

를 얻을 : 디스플레이 내가

2017-05-23 09:44:36,969 | ERROR | l Console Thread | BlueprintContainerImpl   | 23 - org.apache.aries.blueprint.core - 1.4.5 | Unable to start blueprint container for bundle null/0.0.0 
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)[:1.8.0_121] 
    at java.util.ArrayList.get(ArrayList.java:429)[:1.8.0_121] 
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.readDirectives(BlueprintContainerImpl.java:214) 
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:296) 
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270) 
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294) 
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263) 
    at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253) 
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) 
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433) 
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) 
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) 
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) 
    at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127) 
    at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696) 
    at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484) 
    at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429) 
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2100) 
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976) 
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:963) 
    at org.apache.karaf.shell.osgi.StartBundle.doExecute(StartBundle.java:37) 
    at org.apache.karaf.shell.osgi.BundlesCommand.doExecute(BundlesCommand.java:37) 
    at org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38) 
    at org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_121] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121] 
    at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121] 
    at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)[19:org.apache.aries.proxy.impl:1.0.5] 
    at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)[19:org.apache.aries.proxy.impl:1.0.5] 
    at org.apache.karaf.shell.console.commands.$BlueprintCommand417451938.execute(Unknown Source)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:92)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.karaf.shell.console.jline.Console.run(Console.java:197)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
    at org.apache.karaf.shell.console.jline.DelayedStarted.run(DelayedStarted.java:79)[38:org.apache.karaf.shell.console:2.4.0.redhat-630187] 
+0

는 설치 및 번들을 시작한 후 콘솔 로그를 확인 했습니까?jboss 퓨즈 콘솔에 "list"명령을 입력하고 번들 상태가 "활성"인지 확인하십시오. –

+0

번들을 설치하고 실행 한 후 서비스가 정상적으로 작동하는 것처럼 로그에 오류가 없습니다. 내가 osgi를 점검 할 때 : 번들의 상태가 활성 상태 일 때 –

답변

0

는 다음과 같은 몇 가지 수정을해야합니다 : 그것은 보스 퓨즈 6.3 사용 </pluginRepositories>로 바꿉니다.

2 - 코드 6 줄에있는 "빌드 명령 추가"섹션에서 "artifalctId"는 "artifactId"로 바뀌어야합니다.

다음 명령을 사용하여 간단한 메이븐 빠른 시작 프로젝트 1 - 작성 : 다음으로 만들고 샘플 위의 배포에 대한

올바른 단계는

mvn archetype:generate -DgroupId=com.tuts.abhinav -DartifactId=rest-service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 
당신이 다음 때까지

2 변경 프로젝트 구조 구조 :

: Project Structure

3 "UserService.java"클래스는 다음과 같은 내용이 있어야합니다

4 - "blueprint.xml"파일 내용은 다음이 있어야합니다

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0  http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://cxf.apache.org/blueprint/jaxrs  http://cxf.apache.org/schemas/blueprint/jaxrs.xsd"> 
    <jaxrs:server address="/users" id="service"> 
     <jaxrs:serviceBeans> 
      <ref component-id="userService"/> 
     </jaxrs:serviceBeans> 
    </jaxrs:server> 
    <bean class="com.tuts.UserService" id="userService"/> 
</blueprint> 

5 "의 pom.xml"파일을 다음과 같은 내용이 있어야합니다

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.tuts.abhinav</groupId> 
<artifactId>rest-service</artifactId> 
<packaging>bundle</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>rest-service</name> 
<url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>org.apache.servicemix.specs</groupId> 
     <artifactId>org.apache.servicemix.specs.jsr311-api-1.1.1</artifactId> 
     <version>1.9.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.servicemix</groupId> 
     <artifactId>servicemix-http</artifactId> 
     <version>2013.01</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxrs</artifactId> 
     <version>3.0.2</version> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>fusesource.m2</id> 
     <name>FuseSource Community Release Repository</name> 
     <url>http://repo.fusesource.com/nexus/content/repositories/releases</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 

     <releases> 
      <enabled>true</enabled> 
     </releases> 

    </repository> 

    <repository> 
     <id>fusesource.ea</id> 
     <name>FuseSource Community Early Access Release Repository</name> 
     <url>http://repo.fusesource.com/nexus/content/groups/ea</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
    </repository> 

</repositories> 

<pluginRepositories> 
    <pluginRepository> 
     <id>fusesource.m2</id> 
     <name>FuseSource Community Release Repository</name> 
     <url>http://repo.fusesource.com/nexus/content/repositories/releases</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 

     <releases> 
      <enabled>true</enabled> 
     </releases> 
    </pluginRepository> 
</pluginRepositories> 
<build> 
    <defaultGoal>install</defaultGoal> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.3.4</version> 
      <extensions>true</extensions> 

      <configuration> 
       <instructions> 
        <Bundle-SymbolicName>rest-example-database-post-method 
        </Bundle-SymbolicName> 
        <Import-Package>* </Import-Package> 
       </instructions> 
      </configuration> 

     </plugin> 
    </plugins> 
</build> 

6- 다음 명령을 사용하여 프로젝트를 설치할 수 있습니다.

mvn install 

7 - 마지막으로, 다음 명령을 karaf에서 프로젝트 번들을 배포 할 수 있습니다

osgi:install -s mvn:com.tuts.abhinav/rest-service/1.0-SNAPSHOT 

후 그 http://localhost:8181/cxf URL에서 사용 가능한 서비스 필수 : ​​

+0

도움을 주셔서 감사합니다. 그러나 퓨즈에 서비스를 설치하는 데 몇 가지 문제가 있습니다. 설치 후 osgi : list를 수행하면 [320] [Active] [Failure] [80] mvn : com.tuts.abhinav/rest-service/1.0-SNAPSHOT이 표시됩니다. 로그에서 제어 : 2017-05-22 17 : 19 : 09,545 | 오류 | l 콘솔 스레드 | BlueprintContainerImpl | 23 - org.apache.aries.blueprint.core - 1.4.5 | 번들 null/0.0.0에 대한 청사진 컨테이너를 시작할 수 없습니다. –

+0

"log : display"명령을 실행하고 여기에서 예외를 인쇄하십시오. –

+0

의 코멘트에 충분한 공간이없는 경우 게시물을 편집하여 거기에 글을 쓸 것입니다 –

0

어쩌면 대신 퓨즈에서이 REST 예를 시도거야?

1-에서 "추가 퓨즈 플러그인 저장소"코드의 마지막 줄에있는 절, "< pluginRepositories은>"해야합니다 샘플 위

https://github.com/jboss-fuse/quickstarts/tree/master/cxf/rest

+0

예제를 설치하고 시작한 후에는 http : // localhost : 8181/cxf에서 서비스를 볼 수 있지만, 왜 나는 할 수 없는지 이해하지 못한다. 내가 사용했던 다른 예를 보아라. –