Tag: jersey

泽西/jackson:如何捕捉json映射exception?

我希望在我的restful服务中捕获json映射exception,以防输入json无效。 它抛出org.codehaus.jackson.map.JsonMappingException ,但我不知道如何或在何处捕获此exception。 我想捕获此exception并发回适当的错误响应。 @JsonInclude(JsonInclude.Include.NON_NULL) @Generated(“org.jsonschema2pojo”) @JsonPropertyOrder({ “name”, “id” }) public class Customer { @JsonProperty(“name”) private String name; @JsonProperty(“id”) private String id; } public class MyService { @POST @Consumes(MediaType.APPLICATION_JSON) public final Response createCustomer(@Context HttpHeaders headers, Customer customer) { System.out.println(“Customer data: ” + customer.toString()); return Response.ok(“customer created”).build(); } } 一切正常,但如果json body没有很好地形成,那么它会抛出JsonMappingExceptionexception。 我想抓住这个例外。

DropWizard Auth领域

在DropWizard中,我可以像这样设置基本身份validation(在Application#run impl中): BasicAuthProvider authProvider = new BasicAuthProvider(authenticator, “SECRET_REALM”); environment.jersey().register(authProvider); 我想知道String realm (“ SECRET_REALM ”)的重要性是什么? 从一般安全概念来看,我理解一个“领域”是一个存储用户和角色/权限的地方(数据库,目录,文件,密钥库等)。 一个领域在DropWizard中意味着什么,以及在BasicAuthProvider中指定它的意义是什么? 它是否在引擎盖下创造了这个领域的东西?

没有找到Java类的消息正文编写器…和MIME媒体类型text / html

我正在使用jms / atmosphere框架在两个应用程序之间进行通信。 其中一个应用程序是主题的消息生成器,发送以下类型的自定义对象: @XmlRootElement public class A implements Serializable{ public A(){} /* some private properties */ } 另一方面,不止一个消费者正在监听该主题并根据ID进行不同的订阅。 @GET @Produces({MediaType.APPLICATION_JSON}) public SuspendResponse subscribe() { return new SuspendResponse.SuspendResponseBuilder() .broadcaster(topic) .outputComments(true) .addListener(new EventsLogger()).build(); } @Override public void incomingBroadcast() { try { String id = getID(); if (id.startsWith(“/*”)) { id = “atmosphere”; } logger.info(“Looking up Connection Factory […]

在REST / Java中,如果我的对象为null,我应该返回什么?

我有一个简单的POJO,我用REST注释注释如下: @GET @Path(“/domains/{domainid}”) @Override public Domain getDomain(@PathParam(“domainid”) UUID domainID) throws Exception { logger.info(“Retrieving domain “+ domainID); Domain d = null; try { d = MyClient.getDomains().get(domainID.toString()); logger.debug(“Returning “+d.getName()); } catch (Exception e) { logger.error(“Could not retrieve domain”, e); } return d; } 请注意,包含d.getName()的日志语句实际上可以抛出一个NPE,然后捕获并记录该NPE。 这不是很漂亮,但这也不是重点。 最终d是否有价值,我将其归还。 在空值的情况下,我的客户端收到HTTP 204状态代码。 这是wget显示的内容: HTTP request sent, awaiting response… 204 No Content […]

线程“main”中的exceptionjava.lang.NoClassDefFoundError:无法初始化类com.sun.jersey.core.header.MediaTypes

我正试图经营一个jersey客户并面对这个问题。 WS类: import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path(“/hello”) public class HelloWorldService { @GET @Path(“/vip”) @Produces(MediaType.APPLICATION_JSON) public Response getMsg(@QueryParam(“msg”) String msg) { String output = “Jersey say : ” + msg; return Response.status(200).entity(output).build(); } } 客户类: import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; public class JerseyClientGet { public static void […]

如何使用Jersey读取RESTful服务的POST参数?

我没有使用JSON或类似的东西。 我有一个简单的表单来上传文件,我想读取表单的参数。 下面的代码没有按预期工作。 它不会显示任何参数。 @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Path(“{appNum}/{docId}/file”) public Response uploadDocFile( @PathParam(“appNum”) String appNum, @PathParam(“docId”) String docId, @Context HttpServletRequest req) { try { log.info(“POST Parameters:”); Enumeration e = req.getParameterNames(); while(e.hasMoreElements()) { Object key = e.nextElement(); log.info(“Key: ” + key); log.info(“Val: ” + req.getParameter(key.toString())); } } catch (Exception e) { e.printStackTrace(); return Response.status(Status.INTERNAL_SERVER_ERROR).entity(new StatusResponse(e)).build(); } return Response.ok().build(); […]

在SLSB和JAX-WS中指定JAXB包

我正在使用SLSB和JAX-WS注释创建一个简单的SOAP Web服务。 我想传递的对象是从OGC模式生成的JAXB,感谢java.net上的OGC项目。 我遇到问题的一个特定方法(导致部署失败)是请求对象(GetResult)的字段(eventTime)与请求对象位于不同的包中的情况。 此类型的ObjectFactory是不同的,并且在编组/解组时存在问题。 我得到的错误的一个子集: There’s no ObjectFactory with an @XmlElementDecl for the element {http://www.opengis.net/ogc}temporalOps. this problem is related to the following location: at protected javax.xml.bind.JAXBElement net.opengis.sos.v_1_0_0.GetResult$EventTime.temporalOps at net.opengis.sos.v_1_0_0.GetResult$EventTime at protected java.util.List net.opengis.sos.v_1_0_0.GetResult.eventTime at net.opengis.sos.v_1_0_0.GetResult at public net.opengis.sos.v_1_0_0.GetResult net.opengis.sos.v_1_0_0.ObjectFactory.createGetResult() at net.opengis.sos.v_1_0_0.ObjectFactory 在标准的SE应用程序中,当我初始化JAXBContext时,一切都运行良好。 JAXBContext context = JAXBContext.newInstance(“net.opengis.sos.v_1_0_0:net.opengis.sensorml.v_1_0_1:net.opengis.sos.v_1_0_0.filter.v_1_1_0”); 如何在JAX-WS上下文中设置JAXB包? 我的app服务器/环境是GF 3.1。 谢谢您的帮助! 史蒂夫

如何将协作者连接到Jersey资源?

我有一个方法来启动我的应用程序: public void start() throws IOException { final Map initParams = new HashMap(); initParams.put(“com.sun.jersey.config.property.packages”, “com.example”); threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams); } 我有一个泽西岛资源类: @Path(“/notification”) public class NotificationResource { // HOW DO I INJECT THIS GUY? private MySampleCollabolator mySampleCollabolator; @POST public void create() { System.out.println(“Hello world”); } } 处理依赖项的正确方法是什么? 我希望我的资源与其他对象进行通信,如何将它们连接在一起?

Jersey JAX-RS + Spring安全应用程序示例

有没有人有关于这个答案描述内容的示例应用程序? Jersey REST服务上的用户身份validation

如何使用Jersey客户端POST方法提交数据

我是泽西岛的新手。 我需要实现Jersey客户端以POST方法提交数据。 curl命令是: curl -d ‘{“switch”: “00:00:00:00:00:00:00:01”, “name”:”flow-mod-1″, “priority”:”32768″, “ingress-port”:”1″,”active”:”true”, “actions”:”output=2″}’ http://localhost:8080/wm/staticflowentrypusher/json 所以我试图弄清楚如何使用Jersey客户端来实现上面的curl命令。 到目前为止我做了: public class FLClient { private static Client client; private static WebResource webResource; private static String baseuri = “http://localhost:8080/wm/staticflowentrypusher/json”; private static ClientResponse response; private static String output = null; public static void main(String[] args) { try { client = Client.create(); webResource = […]