我已经通过Jersey
在JSF应用程序中集成了一些Web服务。一切正常,即使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
和Glassfish 2.1.2.2
作为插件使用PrimeFaces 3.4.1
上的Jersey 1.17
。如果有任何影响,请在Eclipse Juno
中开发。
这并不妨碍我就Web服务而言一切正常。但是每次我在Glassfish上重新发布内容时,都会显示错误。
如下面的答复中所述,此问题应已根据JIRA bug JERSEY-709在1.7版中修复。但是我在1.17版中表现良好,但我仍然对此感到满意。
我还添加了一条警告,即将进入堆栈跟踪。如果这可以帮助确定问题!
搜索网络:我找到了The same unresolved issue here
如下所述,更新我的OAuthClient.jar
确实解决了第一个error
。我仍在获取WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
。
在我认为会领先this question之后,尝试更新JAXB。这并没有成功。同样的警告。当删除我的web.xml
中的Jersey位时,此警告停止显示(只是为了确认这确实是问题的起因)。
在另一种情况下:使用Maven的独立Java App
在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>
升级到Jersey 1.18时,此错误消失了。
请参见https://java.net/jira/browse/JERSEY-1932
要将Glassfish升级到Jersey 1.18,请参见:https://jersey.java.net/nonav/documentation/1.18/glassfish.html
这应该已经根据JERSEY-709在v1.7中修复。
M8,我也在以下地方遇见了:
NetBeans 7.2
Glassfish 3.1.2.2 which have jersey 1.11, and jersey-oauth 1.11.
但是它可以与:
NetBeans 7.3
Glassfish 3.1.2.2 which have jersey 1.11 (I didn't modify jars in glassfish/module folder)
jersey 1.13 and jersey-oauth 1.13 (which is packed in war)
然后,该异常不再存在。
我仍然不太确定如何解决它,但是我希望这可以为您提供帮助。
Sun people have remove directly access to jaxb package in java 11.
These dependency will work instead of it.
And same time if if you facing hibernate "NullPointerException" issue.
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
</dependency>
shareeditdeleteflag