2017-05-12 7 views
0

cxfとJBoss Fuseを使用してRESTサービスを作成する方法を学習しようとしています。サーバにサービスが正常にインストールされた後、インストールされたcxfサービスのリストがhttp://localhost:8181/cxfにあり、「サービスが見つかりません」という表現が得られました。なぜサービスが現れなかったのか、どのように私がそれを示すことができるのかを知っている人もいます。私はテストとして使用してい コードがorg.apache.cxf CXF-HTTP-基本的なMavenプロジェクトから始めて、このチュートリアル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"コマンドを入力し、バンドル状態が "active"であるかどうかを確認してください。 –

+0

バンドルをインストールして実行した後、サービスがうまく動作しているように、ログにエラーはありません。私は、OSGiの上でチェックする場合:バンドルの状態を一覧表示し、あなたの例をインストールし、起動した後、私は、HTTP上であなたのサービスを見ることができ –

答えて

0

は、いくつかの修正が必要になります。

1-では、コードの最後の行には、「ヒューズプラグインリポジトリを追加」「< pluginRepositories>」をしなければなりません</pluginRepositories>に置き換えてください。

2 - コードの6行目の「ビルド命令の追加」セクションで、「artifalctId」は「artifactId」に置き換えてください。

次のコマンドを実行して、1-作成し、簡単なMavenのクイックスタートプロジェクト:

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をやって:リスト私が取得: [320] [アクティブ]、[失敗] [] [80] MVN:com.tuts.abhinav /残り-サービス/ 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

は、コメントに十分なスペースがありません、私はあなたのMANIFEST.MFが含まれていることを確認してください投稿を編集して、そこ –

0

を取得し、ディスプレイはたぶん代わりにヒューズからこのRESTの例を試してみてください?これは、JBossのヒューズ6.3を使用しています:以下のよう

サンプルの上

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

+0

アクティブです:// localhostを:8181/CXFが、なぜ私はできない私はまだ理解していませんでした私が使っていた他の例を見てください。 –

関連する問題