我使用的一个CXF JAX-RS应用程序使用jackson将POJO编组为JSON.这在很大程度上起作用,但有一天它在编组深度嵌套的对象时失败了NPE.
经过一番调查后,我发现杰克逊被包括在Glassfish 3中(通过泽西岛),并且在移除后jackson-core-asl.jar, jackson-jaxrs.jar, jackson-mapper-asl.jar,jackson-xc.jar一切都运行得很漂亮.我想杰克逊1.7.1(包含在GF3中)有一些错误已在我的应用程序附带的版本中修复(1.8).
现在的问题是,为什么我首先要做到这一点呢?我原以为我的war文件中包含的库应该优先于Glassfish /modules目录中的任何库.
除了从应用服务器中删除jar之外,还有更简洁的方法吗?也许还有其他依赖这些罐子的应用......
另外,我们的GF2容器仍然存在问题,但我在/lib文件夹中找不到任何jackson库(/modulesGF3中没有文件夹).杰克逊可能藏在GF2中的任何线索(如果有的话)?
我正在使用Java EE,Java 1.7,glassfish 3和Eclipse Indigo。我有一个从本教程构建的现有Web项目:http : //www.tech-juice.org/2012/05/13/hello-world-with-jsf-2-0-glassfish-3-maven-svn -and-eclipse /#comment-10560。现在,我想将RESTful Web服务添加到项目中。我转到Project-> properties,Project Facets并检查JAX-RS。然后,我单击显示“需要进一步配置”的链接。我给一个servlet类名。现在,我被告知“必须至少选择一个用户库”。
这是什么意思?
我已经看过,但是没有看到有关将JAX-RS添加到现有项目的教程。
谢谢,斯科特
我正在使用Bill Burke的JAX-RS Restful Java中的示例.我正在使用intellij并创建了一个Maven项目来创建一个"Hello World"Web服务.我知道JAX-RS是一个规范,而不是一个实现.我想尝试Apache CXF实现.
我如何找出什么jar,或Maven工件包含必要的类:
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
Run Code Online (Sandbox Code Playgroud) Swagger文档介绍了在应用程序中配置Swagger的多种不同方法.不幸的是,所有这些都利用web.xml并依赖于在web.xml中对api版本和基本URL进行硬编码
有没有办法在不使用web.xml的情况下配置Swagger并且没有对api版本和基本路径进行硬编码?
我正在阅读oracle docs中提供的Jersey Sample中的存储服务示例示例.
我只是无法理解JAX-RS运行时如何解决这个PUT请求?
curl -X PUT http://127.0.0.1:9998/storage/containers/quotes
Run Code Online (Sandbox Code Playgroud)
这是与此请求对应的代码段(取自上面的链接).
@Path("/containers")
@Produces("application/xml")
public class ContainersResource {
@Context UriInfo uriInfo;
@Context Request request;
@Path("{container}")
public ContainerResource getContainerResource(@PathParam("container") String container) {
return new ContainerResource(uriInfo, request, container);
}
@GET
public Containers getContainers() {
System.out.println("GET CONTAINERS");
return MemoryStore.MS.getContainers();
}
}
Run Code Online (Sandbox Code Playgroud)
但是你可以注意到,没有办法@PUT annotation.但是需要这种getContainerResource方法/containers/{container}.在此方法中,ContainerResource返回一个新实例.我不确定如何处理上述PUT请求.请解释.
这是ContainerResource class:
@Produces("application/xml")
public class ContainerResource {
@Context UriInfo uriInfo;
@Context Request request;
String container;
ContainerResource(UriInfo uriInfo, Request …Run Code Online (Sandbox Code Playgroud) 我对Web服务非常陌生.我已经使用Jersey 2与Spring集成了一些REST服务.现在我需要使用用户名/密码进行身份验证来保护这些休息服务.我被告知不要使用Spring安全性.
我不知道该怎么做.我在网上搜索,但各种链接显示各种实现,我无法决定如何继续它.
我知道这是一个模糊的问题,但请在这方面提供帮助.
所以我在这个线程中创建了webservice ,最后我设法解决了这个问题.现在我正在尝试使用这个Web服务.
我在Netbeans上创建了一个新的Web项目,我正在使用Apache Tomcat.这是使用Web服务的代码.我已经通过一些教程来生成这段代码.
package com.client;
import java.net.URI;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import org.glassfish.jersey.client.ClientConfig;
public class HelloClient {
public void consumeRest(){
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
WebTarget target = client.target(getBaseURI());
System.out.println("response");
System.out.println(target.path("hello").path("world").request()
.accept(MediaType.APPLICATION_JSON).get(Response.class)
.toString());
}
private URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8084/restful_example").build();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个主类来调用consume方法.当我运行它时,我得到这个例外:
Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/jersey/ExtendedConfig
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at …Run Code Online (Sandbox Code Playgroud) 我使用的是最新版本的Spring.我必须与公司A的第三方服务器集成.现在,公司A给了我这样的代码:
Path("/user")
public class CallBacks {
String hostDB="jdbc:mysql://localhost:3306/matchmove";
String username="root";
String password="password";
@POST
@Path("/add")
// @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response receive(
@FormParam("id") String id,
@FormParam("amount") String amount,
@FormParam("asset_code") String assetCode,
@FormParam("asset_issuer") String assetIssuer,
@FormParam("memo") String memo) throws NumberFormatException, SQLException {
return Response.ok().build();
}
Run Code Online (Sandbox Code Playgroud)
我想使用Spring,因为我的项目的其余部分是在Spring!有人可以就以下建议提出建议:
@FormParam?Response.ok().build()?谢谢
当我尝试编辑文件并保存更改时,我在Eclipse Oxygen中得到以下构建错误.
Building workspace has encountered a problem.
Errors occurred during build.
Errors occurred during the build.
Errors running builder 'CDI (Contexts and Dependency Injection) Builder' on project 'EmployeesManagementSystem'.
Unknown tag! pos=4 poolCount = 18
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除.metadataeclipse工作区的文件夹(如其他与构建错误相关的帖子中所建议的),但错误仍然存在.
在我的Jboss中,我尝试使用JAX-RS实现REST服务。它应该返回某些对象的JSON序列化版本
@GET
@Produces({ MediaType.APPLICATION_JSON })
public BlacklistDTO getByName(
@QueryParam("gav") final List<String> gavStringList)
{
...
}
Run Code Online (Sandbox Code Playgroud)
对象的某些部分未正确序列化(结果为空)。如何处理/自定义Jboss生成JSON的方式?