Tag: jersey

如何处理Spring Boot重定向到/ error?

我遇到了与此问题相同的问题,使用Spring Boot 1.3.0并且没有使用@RestController注释我的控制器,只有@Path和@Service 。 正如该问题中的OP所说, 对我来说,这不是明智的事 我也无法理解他们为什么会重定向到/错误。 我很可能错过了一些东西 ,因为我只能向客户回馈404或200。 我的问题是他的解决方案似乎不适用于1.3.0,所以我有以下请求流:让我们说我的代码抛出NullPointerException 。 它将由我的一个ExceptionMapper处理 @Provider public class GeneralExceptionMapper implements ExceptionMapper { private static final Logger LOGGER = LoggerFactory.getLogger(GeneralExceptionMapper.class); @Override public Response toResponse(Throwable exception) { LOGGER.error(exception.getLocalizedMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } } 我的代码返回500,但不是将其发送回客户端,而是尝试将其重定向到/ error。 如果我没有其他资源,它会发回404。 2015-12-16 18:33:21.268 INFO 9708 — [nio-8080-exec-1] o.glassfish.jersey.filter.LoggingFilter : 1 * Server has received a request […]

我们可以为同一个REST方法使用多个@Path注释吗?

我们可以为同一个REST方法使用多个@Path注释,即执行的方法是相同的,但它是在访问多个URL时执行的吗? 例如:我想在http://a/b/c和http://a/b上运行searchNames()方法。

HK2没有用jersey注入HttpServletRequest

我试图按照这里的例子来创建一个工厂,以便注入我的HttpSession。 不幸的是,无论我尝试什么,它都无法正常工作。 不确定可能是什么问题。 我试过注入HttpServletRequest和提供程序。 这是我使用提供程序的示例。 尝试在提供方法中访问提供程序时,该错误是空指针exception。 如果我尝试注入HttpServletRequest,我没有可用于注入的对象。 我使用JerseyTest在GrizzlyTestContainer中运行它。 为了绑定HttpServletRequest,我需要添加到我的活页夹吗? 我似乎无法找到一个例子。 public class HttpSessionFactory implements Factory { private final HttpServletRequest request; @Inject public HttpSessionFactory(Provider requestProvider) { this.request = requestProvider.get(); } @Override public HttpSession provide() { return request.getSession(); } @Override public void dispose(HttpSession t) { } }

传递自定义类型查询参数

我如何接受自定义类型查询参数? public String detail(@QueryParam(“request”) final MYRequest request) { 上面的行在启动服务器时出错 jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.

从命令行运行jar时出现MessageBodyProviderNotFoundException

我正在使用Java Jersey框架(使用Maven),并使用IntelliJ作为我的IDE。 我遇到过这个运行时exception,只有在我尝试从命令行运行代码时才会发生(使用maven编译然后运行java -jar)但是在IntelliJ中运行时这是奇怪的。 我有一些Java代码将尝试在某个远程URL上进行HTTP GET并尝试将返回的JSON读入某些Lombok POJO: String targetUrl = “some valid URL”; WebTarget webTarget = client.target(targetUrl); Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE).get(); ParseResponse parseResponse = response.readEntity(ParseResponse.class); 我不知道为什么,但是当它击中执行“readEntity()”方法的最后一行时,我将得到以下错误: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/json; charset=utf-8 这很奇怪,因为我肯定在我的pom.xml中指定了jersey-media-json-jackson依赖项: org.glassfish.jersey.media jersey-media-json-jackson 2.23 这是我尝试将readEntity()转换为我的POJO类: @Data @JsonIgnoreProperties(ignoreUnknown = true) public class ParseResponse { @JsonProperty(“id”) private Integer id; …Other params… } 就像我之前提到的那样,奇怪的是,只有当我尝试在命令行上运行时才会发生这种情况,但在IntelliJ中运行时没有错误: […]

jackson没有反序列化它已序列化的通用列表

当使用Apache Jersey与Jackson进行JSON序列化时(在服务器和客户端上),我在反序列化通用List时遇到了问题。 我生成的JSON如下,“data”中的所有3个类都实现了“CheckStatusDetail”: { “errorCode” : 0, “errorMessage” : null, “type” : “array”, “data” : [ { “@class” : “com.rrr.base.status.module.dto.DiscoveryAgentCheckStatusDetail”, “serverInfo” : { “@class” : “com.rrr.base.util.discovery.config.xml.XMLServerInfo”, “name” : “java”, “location” : “THEO”, “description” : “sddgs”, “group” : “java”, “aliases” : [ “mercury” ] } }, { “@class” : “com.rrr.base.status.module.dto.MongoDBCheckStatusDetail”, “addresses” : [ “localhost:27017” ], “version” […]

Jersey ClientResponse.getEntity的generics类型

我遇到了使用jeresy ClientRespone.getEntity反序列化的问题 我试图遵循一些教程和问题,包括: http : //jersey.576304.n2.nabble.com/How-can-I-parse-a-java-util-List-lt-gt-Is-它支持泽西客户端-tdd2300852.html https://jersey.java.net/nonav/documentation/1.5/json.html http://www.programcreek.com/java-api-examples/的index.php?API = com.sun.jersey.api.client.GenericType 我仍然一遍又一遍地得到同样的例外 我的目标是:而不是: response.getEntity(String.class); –> {“name”:”Ben”,”type”:”The man”,”id”:0} 然后解析它(例如使用Jackson),我想让实体进入我的POJO对象。 到目前为止,这是我的尝试: 服务器端: @POST @Path(“/account”) // route to a specific method.re @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response saveDataIntoHash(Account account) { Account createdAccount = new Account(account.getName(), account.getType()); accountHash.put(createdAccount.getID(), createdAccount); return Response.status(201).entity(new AccountResponse(createdAccount.getID())).build(); } 服务器端帐户类: private String name; private String type; private int […]

如何测试Jersey REST Web服务?

我编写了一个Restful Web服务,必须使用JUnit4进行测试。 我已经使用Jersey Client编写了一个客户端。 但是想知道我是否只能使用junit4来测试我的服务。 有人可以至少帮我提供样品。 我的rest服务具有validation方法,该方法获取用户名,密码并返回令牌。 我已经为authenticate方法编写了测试用例。 但我不确定如何使用url进行测试。 public class TestAuthenticate { Service service = new Service(); String username = “user”; String password = “password”; String token; @Test(expected = Exception.class) public final void testAuthenticateInputs() { password = “pass”; service.authenticate(username, password); } @Test(expected = Exception.class) public final void testAuthenticateException(){ username = null; String token = […]

泽西岛:返回一个字符串列表

我尝试将Jersey中的字符串列表作为JSON和XML返回。 我认为这将是微不足道的。 我的第一次尝试是写这样的东西 @GET @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Path(“/bar”) public List get() { return dao.get(); } 我期待一个与此类似的输出:[“string1”,…,“stringN”不幸的是我得到了这个: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.LinkedList, and Java type java.util.List, and MIME media type application/json was not found 然后我为List编写了一个包装器StringList @XmlRootElement public class StringList { private List data; public StringList() { } public StringList(List data) { this.data = […]

何时使用Jersey的@Singleton注释?

我正在开发一个RESTful Web服务,在阅读Jersey 文档时,我遇到了一个注释@Singleton 在我的Web服务中,我主要根据作为参数提供的唯一键返回数据。 当Student_Id通过时,类比将返回学生的所有信息。 所以我的问题是@Singleton何时适合这种Web服务? 根据@RequestScoped文档 如果资源在请求处理中使用了多次,则始终使用相同的实例。 那么在那种情况下我们不应该费心去使用@Singleton吗? 还有什么可能是我们必须为每个请求创建一个新实例的用例? 我确实看过这篇文章,但我的问题没有得到解答。