を介していくつかの 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.20
onGlassfish 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
この警告が表示されなくなります (これが実際に問題を引き起こしていることを確認するためです)。