Tag: jersey

使用Jersey和Spring进行REST服务的@Autowired属性的NullPointerException

我一直在开发一个gwt应用程序,应该有一个rest服务来访问数据库,包括它自己的数据库和其他远程数据库。 我使用Spring来更好地使用数据库(objectdb)而不是我在使用Jersey进行练习。 这是给出问题的代码: User.java @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) @XmlRootElement public class User implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long id; private String name; private String surname; private int age; … } Customer.java @Entity @XmlRootElement public class Customer extends User implements java.io.Serializable{ private static final long serialVersionUID = 1L; @Column(unique=true) private […]

使用Jersey和@ApplicationPath批注加载资源

我正在尝试在没有web.xml的情况下将基本的泽西式restful服务部署到Tomcat7: @WebServlet(loadOnStartup=1) @ApplicationPath(“resources”) @Path(“/mypath/{name}”) public class MyResource extends Application { @Override public Set<Class> getClasses() { Set<Class> s = new HashSet<Class>(); s.add(MyResource.class); return s; } @GET @Consumes(“text/plain”) @Produces(“text/plain”) public String getWelcome(@PathParam(value = “name”) String name) { return “Welcome to jax-rs ” + name; } } 尝试访问时,我遇到了404: / myapplication / resources / mypath / sample 。 我可以使用@WebServlet注释部署servlet,因此这与将没有web.xml的servlet加载到Tomcat7中无关。 […]

如何从多部分表单数据请求中删除http工件?

我在jersery servlet中有这个方法签名。 正在到达servlet并且表单数据存在于uploadedInputStream对象中,但是流没有从中删除http工件。 见下文。 @POST @Produces(“text/plain”) @Consumes(MediaType.MULTIPART_FORM_DATA) public String uploadFileIE( @FormDataParam(“qqfile”) InputStream uploadedInputStream ){ } 保存到文件时,输入流包含字节数据周围的这些工件: —————————–7dc1f42e3005a8 Content-Disposition: form-data; name=”qqfile”;filename=”[filename]” Content-Type: application/octet-stream [bytes from data stream] —————————–7dc1f42e3005a8– 此时不应该删除这些工件吗? 有没有简单的方法来删除它们而不重新发明轮子?

带名称空间解组的JAXB(使用REST服务中的Jersey)

我正试图从Convio的公共api解组一个简单的xml文档。 我没有使用以下代码获得任何编译器错误,但它也不会产生结果。 值为null。 如果我从xml文档中删除模式和命名空间项并从POJO中删除命名空间属性,那么它将运行得很好。 我缺少什么能够使用xsd文档/命名空间? 我试图解析的XML示例 abcdefghijklmnopqrstuvwxyz 0123456789 和带注释的POJO: @XmlRootElement(name = “getSingleSignOnTokenResponse”, namespace = “http://convio.com/crm/v1.0”) public class SingleSignOnResponseBean { @XmlElement(name = “token”) public String token; @XmlElement(name = “cons_id”) public int consId; } 现在,我正在使用Jersey来完成实际的工作,但由于我无法使用Jersey解组,我在上面的XML结果的机器上使用静态xml文件手动设置了一个unmarshaller: JAXBContext jc = JAXBContext.newInstance(new Class[] {org.orgname.utility.convio.sso.api.SingleSignOnResponseBean.class}); Unmarshaller u = jc.createUnmarshaller(); SingleSignOnResponseBean bean2 = (SingleSignOnResponseBean) u.unmarshal(new File(“C:/token.xml”)); System.out.println(bean2.token); 这可能非常简单,我只是没有看到为什么如果定义了架构和命名空间元素它将无法工作。 我已经看到了一些关于设置某种SAXfilter以去除命名空间的评论,但由于我是通过直接来自泽西的REST调用进来的,所以我不相信我有机会这样做。 有任何想法吗?

Jersey客户端API问题

我正在编写一个调用Web服务的Android客户端。 该服务使用JAX-RS / Jersey API编写。 我也试图在android端使用Jersey-Client API。 Client client = Client.create(); WebResource webResource = client.resource(server + “/api/restaurant_info/update”); MultivaluedMap formData = new MultivaluedMapImpl(); formData.add(“id”, id); formData.add(“f”, Boolean.toString(f)); formData.add(“fId”, fId); ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, formData); RestInfo restInfo = response.getEntity(RestInfo.class); return restInfo; 我已经在外部测试了Web服务,它似乎工作正常。 当我尝试从我的应用程序中调用它时,我在ClientResponse行遇到NullPointerException。 03-26 14:15:43.735: WARN/System.err(1060): java.lang.NullPointerException 03-26 14:15:43.745: WARN/System.err(1060): at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119) 03-26 14:15:43.745: WARN/System.err(1060): at com.sun.jersey.api.client.PartialRequestBuilder.type(PartialRequestBuilder.java:92) […]

Jersey / JAX-RS资源方法输入beanvalidation

我通过DropWizard 0.7.1使用Jersey / JAX-RS来公开RESTful服务端点。 我的所有实体POJO都注释了JAX-RS和Hibernate / JSR-303 beanvalidation注释,如下所示: public class Widget { @JsonProperty(“fizz”) @NotNull @NotEmpty private String fizz; // Can’t be empty or null @JsonProperty(“buzz”) @Min(value=5L) private Long buzz; // Can’t be less than 5 // etc. } 当资源方法接收这些POJO中的一个作为输入时(在引擎盖下,DropWizard已经将HTTP实体JSON反序列化为Widget实例),我想根据Hibernate / Bean Validation注释validation它: @POST Response saveWidget(@PathParam(“widget”) Widget widget) { // Does DropWizard or Jersey have something […]

JAXB:generics的多态性

我正在尝试使用JAXB(在泽西岛内)与generics的多态性: @XmlRootElement public class Performance { @XmlAnyElement private List measurement; } @XmlJavaTypeAdapter(MeasurementAbstract.Adapter.class) public interface IMeasurement extends Serializable { D getDate(); void setDate(D date); V getValue(); void setValue(V value); } @XmlTransient @XmlAccessorType(XmlAccessType.FIELD) @XmlSeeAlso({MeasurementStringDouble.class, MeasurementStringInteger.class}) public abstract class MeasurementAbstract implements IMeasurement { @XmlElement protected D date; @XmlElement protected V value; static class Adapter extends XmlAdapter { public […]

将文档流发送到Jersey @POST端点

我希望能够将一堆文档流发送到Web服务。 这将节省Http请求/响应开销并专注于文档本身。 在python中你可以这样做: r = requests.post(‘https://stream.twitter.com/1/statuses/filter.json’, data={‘track’: ‘requests’}, auth=(‘username’, ‘password’), stream=True) for line in r.iter_lines(): if line: # filter out keep-alive new lines print json.loads(line) 我正在寻找有人将请求流式传输到泽西岛restapi的示例。 我希望看到客户端和服务器端显示它正常工作。 但我很难找到一个例子。 理想情况下,该示例将显示: Client: Open request Iterate over huge document list Write document to open request stream Close request Server: @POST method Open entity stream Iterate over entity stream […]

无法在Jersey中实现简单文件上传 – “使用POST注释资源,类不被认为是有效的资源方法。 不可用”

无法使用Jersey实现简单的文件上传。 缺少应用程序引导时引发的依赖性错误: The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.foo.MyResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0 SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.foo.MyResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1 SEVERE: Method, public javax.ws.rs.core.Response com.foo.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class com.foo.FS2Resource, is not […]

使用Jersey序列化Java 8流

如何使用Jersey序列化Java 8 java.util.Stream 。 我尝试编写MessageBodyWriter ,但我需要知道如何使用新的MessageBodyWriter为我的Stream编写(修饰)现有的MessageBodyWriters 。 Stream get(){ return some stream of strings } public class StreamMessageBodyWriter<Stream> implements MessageBodyWriter<Stream> { public void writeTo(…….){ //How can I get the handle to MessageBodyWriter that will write for type T, //so that I can ‘collect’ the ‘java.util.Stream’ and write it to //OutputStream } }