Tag: resteasy

尽管使用了JsonIgnore,但未能懒惰地初始化ManyToMany关系中的角色集合

我有两个业务对象有很多关系。 我正在使用REST服务来调用下面给出的DAO方法,并获得政治事件的政治指标列表。 然而,虽然DAO中的piList成功地给了我政治指标列表,但它仍然给了我一个例外 Failed to lazily intialize a collection of role… 通过参考链: org.hibernate.collection.internal.PersistentBag[0]—–>PolIndicator.piList.role org.jboss.resteasy.spi.writerException org.codehaus.jackson.map.JsonmappingException” 我在政治指标类中使用了@JsonIgnore来对抗政治事件属性,但仍然发生了懒惰的exception。 我哪里错了? PolEvent { @Id @Column(name=”SEQ_EVENT_ID”) private BigDecimal id; @Column(name=”EVENT_NAME”) private String eventName; @ManyToMany @JoinTable( name=”POL_LINK_INDCTR” joinColumns={@JoinColumn(name=”SEQ_EVENT_ID”)}, inverseJoinColumns=@JoinColumn(name=”SEQ_PI_ID”) ) private List piList; } PolIndicator { @Id @Column(name=”SEQ_PI_ID”) private BigDecimal id; @Column(name=”POL_IND_NAME”) private String piName; @ManyToMany(mappedBy=”piList”) @JsonIgnore private List eventList; } […]

REST API URL中的额外查询参数

在我的Rest应用程序中,资源url还支持查询参数,如pageSize,pageNum,name等。所以请求url看起来像 /资源/ {ID}?页次= 1&的pageSize = 25&DESC = “你好” 现在假设一个客户端添加一个额外的查询参数,说’lang’,我的服务器不支持 / resource / {id}?pageNum = 1&pageSize = 25&desc =“hello”&lang =“eng” ,但我的服务器不支持任何lang参数。 什么应该是最好的设计决定 选项1:忽略额外的无效查询参数并提供请求。 选项2:向客户端抛出错误的请求消息。 感谢Advance Singla

如何捕获RESTEasy Beanvalidation错误?

我正在使用JBoss-7.1和RESTEasy开发一个简单的RESTFul服务。 我有一个名为CustomerService的REST服务,如下所示: @Path(value=”/customers”) @ValidateRequest class CustomerService { @Path(value=”/{id}”) @GET @Produces(MediaType.APPLICATION_XML) public Customer getCustomer(@PathParam(“id”) @Min(value=1) Integer id) { Customer customer = null; try { customer = dao.getCustomer(id); } catch (Exception e) { e.printStackTrace(); } return customer; } } 当我点击URL http:// localhost:8080 / SomeApp / customers / -1时, @ Min约束将失败并在屏幕上显示堆栈跟踪。 有没有办法捕获这些validation错误,以便我可以准备一个带有正确错误消息的xml响应并显示给用户?

用于附加文件的RESTeasy客户端代码

我需要将一个文件附加到我的服务端点。 我通过POSTMAN(chrome浏览器插件测试rest服务)测试了function,它运行正常。 但是我需要用JUNIT来测试它。 对于这种情况,我使用的是RESTeasy客户端。 我正在尝试使用此代码: StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new FileReader(“C:/Temp/tempfile.txt”)); try { String line = br.readLine(); while (line != null) { sb.append(line); sb.append(System.lineSeparator()); line = br.readLine(); } } finally { br.close(); } byte[] file = sb.toString().getBytes(); Client client = ClientBuilder.newClient(); Invocation.Builder builder = client.target(webTarget.getUri() + “/attachment” ).request(MediaType.MULTIPART_FORM_DATA_TYPE); Response response […]

如何在RESTEasy中启用JSONP?

标题说我的问题。 我需要将DTO包装到javascript方法回调中。 目前我按要求返回JSON。 但是在Ajax中使用它的问题是因为我将GET发送到其他域。 当然还有安全警察。 我有创意添加提供的想法。 你有任何例子,链接或建议如何做到这一点。

如何让@RolesAllowed注释适用于我的Web应用程序?

我使用Backbone.js,Bootstrap,NetBeans IDE 8.0,Java EE 7,JDK 8,WildFly服务器8.1.0,JBoss RESTEasy(resteasy-jaxrs-3.0.8),JBoss 2.2.22,JBoss EJB 3制作Web应用程序。 我(相对)是Web开发的新手,因此我刚开始掌握了很多基本概念和技术。 我正在尝试将用户和角色的权限系统构建到Web应用程序中,但我似乎无法使@RolesAllowed注释在我的RESTful Web服务中工作。 我已经在这个问题上工作了几天。 我有一个名为UserResource.java的RESTful资源(Java Enterprise / Session Bean?),在这里我有一个方法create来为应用程序创建一个新用户: import java.net.URI; import java.security.Principal; import java.util.List; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.ws.rs.*; import javax.ws.rs.core.*; import org.jboss.ejb3.annotation.SecurityDomain; @Stateless @SecurityDomain(“other”) @Path(“/user”) public class UserResource { @EJB(name = “UserServiceImp”) UserService userService; @Context private UriInfo uriInfo; […]

通过JAXB将链接插入RESTEasy XML结果

我想通过RESTeasy / JAXB将链接插入XML。 我试图使用我的代码的文档 ,但这没有用,所以我只是在文档中编写给定的例子:它仍然不起作用,我不知道为什么。 背景: 要在我的JBoss RESTEasy API中实现HATEOAS原则,我必须在我的JAXB XML结果中插入链接,以便客户端可以浏览API。 我现在正试图了解如何做到这一点,但我不确定文档是否充满错误,或者我只是无法理解示例和解释: 不清楚的东西 : 据我了解,你必须使用@AddLinks来声明结果应该插入链接。 然后我必须使用@LinkResource 再次 (!?) 冗余地执行此操作,并且“ 有时 ”指定URI构建过程应该来自哪个类(例如@LinkResource(value = car.class) )。 然后我必须在实体类中添加一个RESTServiceDiscovery ,用@XmlElementRef注释它……但在示例中,在声明(!?)之后, RESTServiceDiscovery根本没有被使用。 码: 我真的很困惑如何使用所有这些,但当然我自己尝试了很多代码,让它工作。 以下代码就像文档示例: BookController.java import java.util.ArrayList; import java.util.Collection; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import org.jboss.resteasy.links.AddLinks; import org.jboss.resteasy.links.LinkResource; import com.gasx.extsys.datamodel.vo.kplan.Book; @Path(“/”) @Consumes({ “application/xml”, “application/json” }) […]

什么是Resteasy 3.X PreProcessInterceptor的正确替代品?

我正在使用本教程中描述的身份validation/授权机制构建rest服务: http : //howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/ 基本上它使用PreProcessInterceptor接口来扫描目标方法的注释(来自javax.annotation.security包),该方法描述了访问该方法所需的角色。 由于此处的validation器是拦截器,它可以取消目标方法调用,如果需要,返回401(未授权)。 这里的问题是在当前的RestEasy版本(3.0.1)中不推荐使用接口org.jboss.resteasy.spi.interception.PreProcessInterceptor,我在尝试使用标准JAX-RS接口实现相同的行为时遇到了问题。 我正在使用javax.ws.rs.ext.ReaderInterceptor接口来拦截调用。 但不知何故,服务器从不调用它:拦截器只是被忽略了。 我正在使用与之前的PreProcessInterceptor相同的方式注册拦截器/资源,并使用相同的@Provider和@ServerInterceptor注释: ServerApplication: public class ServerApplication extends javax.ws.rs.core.Application { private final HashSet singletons = new LinkedHashSet(); public ServerApplication() { singletons.add(new SecurityInterceptor()); singletons.add( … ); //add each of my rest resources } @Override public Set<Class> getClasses() { HashSet<Class> set = new HashSet<Class>(); return set; } @Override public Set […]

REST HTTP身份validation – 如何?

所以,我正在使用RESTeasy和Google App Engine开发REST Web服务。 我的问题与GAE没有关系,但我提到它只是为了重要。 事实上,我需要保护我的资源和我自己的用户(不是谷歌的)。 保护REST Web服务似乎是一个非常有争议的主题,或者至少是一个非常“自由”的主题。 REST没有对此事项施加任何标准。 根据我在网络和文献上的研究,我认为至少有3种方法可能适用于我的应用程序: HTTP Basic (使用SSL) HTTP摘要 (使用SSL) OAuth的 OAuth似乎是最完整的方法。 但我不认为需要这么复杂,因为我不需要授权任何第三方应用程序。 它是仅由我自己的客户端应用程序使用的Web服务。 HTTP Basic和HTTP Digest在Web上显示为最简单的,但事实是我从未使用RESTeasy找到它们的具体实现,例如。 我在RESTeasy的文档中找到了这个页面和这个页面 。 它们确实非常有趣,但它们对此主题(HTTP Basic或Digest)几乎没有任何说明。 所以,我在这里问: 如何使用RESTeasy中的HTTP Basic或Digest保护我的WebService? 也许它很简单,在文档或其他任何地方都不值得一提? 此外,如果有人能够就保护RESTful Web服务的问题向我提供一些见解,那么它可能会有所帮助。 我选择了正确的方法吗?

使用RESTEasy进行错误的特殊字符编码

我正在开发一个使用jboss eap 6.3的web应用程序,它使用resteasy rest框架,我在POST资源中以FormParam传递的特殊字符有一个错误的编码问题,例如: @POST @Path(“/post”) public Response createTask(@FormParam(“param”) String param) { LOGGER.info(“HELLO POST XML. “+param); return Response.ok(param).build(); } 如果我通过像abcèèè这样的东西,我会得到像“abcèÃÃÃèèè”这样的东西,并且有jerseyrest框架,这个问题不存在。 我该怎么办? 谢谢