使用我非常简单的JAX-RS服务,我使用Tomcat和JDBC领域进行身份验证,因此我正在使用JSR 250注释.
问题是我想在HTTP状态响应中返回自定义消息体.状态代码(403)应保持不变.例如,我的服务如下所示:
@RolesAllowed({ "ADMIN" })
@Path("/users")
public class UsersService {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String getUsers() {
// get users ...
return ...;
}
}
Run Code Online (Sandbox Code Playgroud)
如果角色与"ADMIN"不同的用户访问该服务,我想将响应消息更改为类似的内容(取决于媒体类型[xml/json]):
<error id="100">
<message>Not allowed.</message>
</error>
Run Code Online (Sandbox Code Playgroud)
目前泽西岛返回以下机构:
HTTP Status 403 - Forbidden
type Status report
message Forbidden
description Access to the specified resource (Forbidden) has been forbidden.
Apache Tomcat/7.0.12
Run Code Online (Sandbox Code Playgroud)
如何更改默认邮件正文?有没有办法处理(可能抛出)异常来构建我自己的HTTP状态响应?
我正在开发一个必须在Java SE 5和Java SE 6上运行的项目.我最近开始使用一个@Generated向生成的代码添加注释的工具,我想保留这些注释.它看起来像是javax.annotation.Generated在Java 5 EE和Java 6 SE及更高版本中,但不在Java 5 SE API中.
javax.annotation.Generated当我将它发送给客户时,最好的方法是什么,所以它可以在Java SE 5和Java SE 6上运行而没有任何问题?我只需要包含一个额外的jarfile吗?如果是这样,哪一个确实@Generated存在?
我有一个使用Apache CXF生成和构建的Web服务客户端.接下来我有JAX-RS Jersey应用程序,我想从该webservice调用方法.当我尝试将这个简单的项目部署到Glassfish 4.0服务器时,我得到以下异常:
Exception while deploying the app [pelijee] :
The lifecycle method [finalizeConfig] must not throw a checked exception.
Related annotation information: annotation [@javax.annotation.PostConstruct()] on annotated element [public void org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.finalizeConfig() throws java.security.GeneralSecurityException,java.io.IOException] of type [METHOD]. Please see server.log for more details.
Run Code Online (Sandbox Code Playgroud)
命令部署失败.
我在这个项目中唯一的CXF依赖是:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-jaxrs</artifactId>
<version>2.7.6</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
是否还有其他与JSR 250兼容的CXF库?谢谢