以下问题讨论了Jersey与JAX-RS规范之间的依赖关系理论:
我假设我可以添加依赖项:
<!-- javax.ws.rs.core e.g. Request -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
到我的API定义maven项目并使用Jersey/Grizzly来实现.
<jersey.version>1.15</jersey.version>
<grizzly.version>2.2.20</grizzly.version>
Run Code Online (Sandbox Code Playgroud)
与此假设相反,我收到以下错误消息:
15.02.2013 08:41:25 org.glassfish.grizzly.http.server.HttpServerFilter handleRead
WARNUNG: Unexpected error
java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType
at com.sun.jersey.spi.container.ContainerResponse.getStatus(ContainerResponse.java:571)
Run Code Online (Sandbox Code Playgroud)
什么是应该与Jersey 1.15一起使用的正确的JAX-RS API依赖?
我希望以一种可以由任何其他符合JAX-RS的库替换实现的方式来实现.
如何使用Jersey API或任何其他jax-rs API在jax-rs中使用@HEAD?请给我样品.
我正在尝试使用cxf实现发送一个post请求.但是我InjectionUtils - Parameter Class SizeQuantityBean has no constructor with single String parameter, static valueOf(String) or fromString(String) methods在绑定一个类时遇到错误.
我发送请求的代码:
sellerService.register(sellerBean);
Run Code Online (Sandbox Code Playgroud)
执行:
@Path(BASE_PATH + "/register")
@POST
@Produces({MediaType.APPLICATION_JSON})
BaseBean register(@QueryParam("") SellerBean sellerBean){
...
...
}
Run Code Online (Sandbox Code Playgroud)
SellerBeanclass有List SizeQuantityBean.如何重新解决这场冲突?
我正在尝试使用JAX-RS(Jersey)创建一个简单的REST服务,而不使用Spring。我想具有以下典型结构:资源,使用服务(具有方法的典型接口findById,findAll ...),并将该服务注入资源中。
似乎CDI会自动扫描bean并将其注入(beans.xml在项目中为空),但是...对我而言不起作用。
这是我的Resource类:
@Path("users")
@ManagedBean
public class UserController {
@Inject
private UserService userService;
@GET()
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public User getUserById(@PathParam("id") Long id) {
return userService.findById(id);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Service及其impl类(它是一个模拟...):
public interface UserService {
User findById(Long id);
List<User> findAll();
User save(User user);
User update(User user);
void delete(Long id);
}
public class UserServiceMock implements UserService {
// omitted constants
@Override
public User findById(Long id) {
return new User()
.setId(id)
.setName(NAME_GANDALF)
.setPhone(PHONE_666554433)
.setType(TYPE_1)
.setBirthDate(LocalDate.parse(STRING_DATE_19110102));
}
@Override
public List<User> findAll() { …Run Code Online (Sandbox Code Playgroud) 通常情况下的WebLogic 12c的犯规支持JAX-RS 2.0,但通过JAX-RS的帮助下共享库附带的WebLogic本身就可以JAX-RS版本升级为1.1至2.0.问题是库实现是jersey 2.5,它不能满足我的需求.我找到了一个关于在weblogic上升级球衣版本的链接,这看起来很复杂.用我的球衣版2.13替换球衣罐2.5是否足够?我还需要做其他事吗?
我有一个在Java EE 7应用程序服务器(WildFly)上运行的应用程序,它使用REST资源查询另一个服务.
在以前的应用程序中,我使用了Jersey 1.x客户端API.通过Web代理授予对REST服务的访问权限.
在Jersey中,我创建了Client这样的实例:
public Client create() {
Client client;
if ( proxyConfiguration != null && proxyConfiguration.getHost() != null && !proxyConfiguration.getHost().trim().isEmpty() ) {
HttpURLConnectionFactory urlConnectionFactory = new ProxyUrlConnectionFactory( proxyConfiguration );
client = new Client( new URLConnectionClientHandler( urlConnectionFactory ), clientConfig );
} else {
client = Client.create( clientConfig );
}
return client;
}
Run Code Online (Sandbox Code Playgroud)
在Java EE 7应用程序服务器上运行我想使用应用程序服务器提供的JAX-RS 2.0客户端API.
现在我很难找到有关如何以独立于平台的方式配置JAX-RS 2.0客户端的信息.设置http.proxyHost和http.proxyPort系统属性在WildFly中没有任何效果(我宁愿不在全局配置它).
有谁知道如何解决这个问题?
我有一个JAX-RS Web服务,它返回一个获取JSON请求参数(映射到Parameter对象),如下所示(它在WebLogic 12.2.1中运行).是否可以编写拦截器或过滤器,这样当调用Web服务时,它将在JSON请求消息中添加一个额外的字段,以便下面的方法将在requestParameters中获得额外的字段?
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("LogIn")
public Response logIn(@Context HttpServletRequest request, Parameters requestParameters) {...}
Run Code Online (Sandbox Code Playgroud)
谢谢!
使用Eclipse时,我可以使用JAX-WS批注(例如@WebService),而无需包含任何外部依赖项,但是我不能对JAX-RS批注(例如@Path)进行相同的操作。我看了一下这个答案,我知道这javax.ws.rs不是JDK的一部分。为什么JAX-WS是JDK的一部分而JAX-RS不是呢?其次,如果我在GlassFish或WildFly服务器上部署带有JAX-WS注释的应用程序,该服务器是否使用众所周知的WebService堆栈来运行该应用程序(例如Metro)或它自己的实现?
我是jax-rs的新手,并且已经建立了一个带有平针织物和玻璃鱼的网络服务.
我需要的是一个方法,一旦服务启动就会调用它.在这个方法中,我想加载自定义配置文件,设置一些属性,写一个日志,等等......
我尝试使用servlet的构造函数,但每次调用GET或POST方法时都会调用构造函数.
我有什么选择才能意识到这一点?
请告诉我,如果需要一些依赖项,请告诉我如何将它添加到pom.xml(或其他)
我想上传图像并将一些参数发送到我的java rest服务。jersey-media-multipart我已经添加到我的应用程序中,pom.xml并且将必要的配置设置为ApplicationConfigclass。我正在将Wildfly 11用于应用程序服务器。但是我一直在收到此异常。
11:29:36,199 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-35) RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003200: Could not find message body reader for type: class org.glassfish.jersey.media.multipart.FormDataMultiPart of content type: multipart/form-data;boundary=--------------------------291101341234694996301314
at org.jboss.resteasy.core.interception.ServerReaderInterceptorContext.throwReaderNotFound(ServerReaderInterceptorContext.java:53)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:80)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
at org.jboss.resteasy.security.doseta.DigitalVerificationInterceptor.aroundReadFrom(DigitalVerificationInterceptor.java:36)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:59)
at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:151)
at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:92)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:115)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:406)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:213)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at com.mepsan.outra.global.LoginFilter.doFilter(LoginFilter.java:41) …Run Code Online (Sandbox Code Playgroud)