6

を介していくつかの Web サービスを JSF アプリ内に統合しましたJersey。OAuth 識別が機能していても、すべてが正常に機能します。しかし!ウェブサーバーを起動すると、常に次のエラーが発生します。

INFO: Scanning for root resource and provider classes in the packages:
  com.mysite.webService
INFO: Root resource classes found:
  class com.mysite.webService.Accounts
INFO: No provider classes found.

INFO: Initiating Jersey application, version 'Jersey: 1.17 01/17/2013 03:31 PM'

SEVERE: The provider class, class com.sun.jersey.oauth.server.OAuthProviderInjectionProvider, could not be instantiated. Processing will continue but the class will not be utilized
java.lang.RuntimeException: No OAuthProvider implementation found in the list of providers.
    at com.sun.jersey.oauth.server.OAuthProviderInjectionProvider.<init>(OAuthProviderInjectionProvider.java:71)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

(edit2: 上記は現在解決されています)

そしてこの警告:

...

WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory not found by com.sun.jersey.glassfish.v3.osgi.jersey-gf-server [157]]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:148)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:361)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409)
    at com.sun.jersey.server.impl.wadl.WadlApplicationContextImpl.<init>(WadlApplicationContextImpl.java:95)

ここに私のweb.xml関連するエントリがあります:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>my.site.webService</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

私のクラスは次のようになります:

@Path("/rest")
public class MyClass {

    @GET 
    @Path("/{id}/results")
    @Produces("application/json")
    public String getResults(@Context HttpContext hc, @PathParam("id")) {
        //...
    }
}

アドオンとしてMajorra 2.1.20onGlassfish 2.1.2.2を使用しPrimeFaces 3.4.1ています。これが何かに影響する場合はJersey 1.17開発中です。Eclipse Juno

編集

これは、Web サービスに関してすべてを正常に機能させることを妨げるものではありません。しかし、Glassfish で何かを再公開するたびに、エラーが表示されます。

以下の回答で述べたように、これはJIRA バグ JERSEY-709に従ってバージョン 1.7 で修正されているはずです。しかし、私は v. 1.17 で非常にうまく機能しており、まだこれを取得しています。

また、スタック トレース内に警告を追加しました。これが問題の特定に役立つ場合!

Web の検索 :同じ未解決の問題が見つかりました

編集 2

以下で回答されているように、更新OAuthClient.jarすると最初の問題が解決しましたerror。私はまだ取得していWARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not foundます。

編集 3 - 試みられた解決策

この質問のリードになると思った後、JAXBを更新しようとしました。これは何も成功につながりませんでした。同じ警告。ジャージー ビットを削除すると、web.xmlこの警告が表示されなくなります (これが実際に問題を引き起こしていることを確認するためです)。

4

4 に答える 4

15

別のコンテキスト: Maven を使用したスタンドアロン Java アプリ

pom.xml では、jaxb は次の行を使用して定義されました。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.1</version>
</dependency>

プロジェクトのコンパイルは成功しましたが、実行時に同じ例外 (java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory) を受け取りました。

jaxb-api 依存関係の前にこの行を追加することで問題が解決しました

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.1.2</version>
</dependency>
于 2013-04-23T09:58:54.007 に答える
1

このエラーは、Jersey 1.18 にアップグレードすると解消されました。

https://java.net/jira/browse/JERSEY-1932を参照

Glassfish を Jersey 1.18 にアップグレードするには、https ://jersey.java.net/nonav/documentation/1.18/glassfish.html を参照してください。

于 2014-06-05T15:37:55.140 に答える
0

これは、 JERSEY-709に従って v1.7 で修正されているはずです。

于 2013-03-15T16:04:52.310 に答える