2015-11-15 14 views
19

Tôi đã phát triển một ứng dụng Android và bây giờ tôi bắt đầu với DB bên ngoài và máy chủ của nó, giao tiếp được thực hiện bởi các dịch vụ web RESTful.Lỗi thủy tinh khi tạo JSON

Ứng dụng Android này chỉ sản xuất và tiêu thụ thông tin trong JSON, vì vậy trong các mặt nạ dịch vụ web của tôi, tôi chỉ muốn xóa mọi đề cập đến XML theo các phương pháp CRUD (được tạo tự động bởi NetBeans).

Ý tôi là, từ này:

@GET 
@Override 
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public List<Counselor> findAll() { 
    return super.findAll(); 
} 

Để này (không có MediaType.APPLICATION_XML):

@GET 
@Override 
@Produces(MediaType.APPLICATION_JSON) 
public List<Counselor> findAll() { 
    return super.findAll(); 
} 

Cái này là khi tôi triển khai những thay đổi trong GlassFish máy chủ của tôi (4.1. 1) và thực hiện một số kiểm tra với trình duyệt của tôi (chỉ muốn xem dữ liệu DB của tôi) Tôi gặp lỗi với stacktrace này:

java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper 
    at org.eclipse.persistence.jaxb.JAXBBeanValidator.isConstrainedObject(JAXBBeanValidator.java:257) 
    at org.eclipse.persistence.jaxb.JAXBBeanValidator.shouldValidate(JAXBBeanValidator.java:208) 
    at org.eclipse.persistence.jaxb.JAXBMarshaller.validateAndTransformIfNeeded(JAXBMarshaller.java:587) 
    at org.eclipse.persistence.jaxb.JAXBMarshaller.marshal(JAXBMarshaller.java:481) 
    at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.writeTo(MOXyJsonProvider.java:949) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) 
    at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) 
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) 
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:683) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:424) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:414) 
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:312) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1139) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:460) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
    at java.lang.Thread.run(Thread.java:745) 

Bất kỳ ý tưởng nào về điều này?

Tôi hy vọng tôi tự giải thích ... cảm ơn trước !!

Trả lời

34

Đó là một lỗi trong Glassfish 4.1.1 https://java.net/jira/browse/JERSEY-2888

tôi đã có thể sửa chữa nó một cách bẩn:

trong Glassfish/modules/org.eclipse.persistence.moxy.jar sửa chữa META-INF /MANIFEST.MF Chỉ cần nối sau để nhập trọn gói:

,org.xml.sax.helpers,javax.xml.parsers;resolution:=optional,javax.naming;resolution:=optional 

để nó trông giống như sau:

enter image description here

và khởi động lại GF

btw: bạn có thể chỉnh sửa lọ dễ dàng trong thiết bị đầu cuối với

emacs org.eclipse.persistence.moxy.jar 
+0

Có kế hoạch phát hành bản sửa lỗi cho thủy tinh không? – cebor

+0

Yeap, đó là nó, cảm ơn rất nhiều:). Tôi vừa sửa nó nhờ vào bài đăng này: https://bugs.eclipse.org/bugs/show_bug.cgi?id=463169 Tôi sẽ đăng nó ở đây ngay bây giờ khi tôi nhìn thấy câu trả lời của bạn. @cebor Tôi đã đọc rằng nó đã được sửa (https://java.net/jira/browse/JERSEY-2888), nhưng có vẻ như không phải là –

+1

Đối với những người không sử dụng thiết bị đầu cuối, miễn là các tệp JAR tệp zip, bạn có thể trích xuất và sửa đổi chúng bằng bất kỳ trình giải nén zip nào. –

5

câu trả lời của Jack là thực sự hữu ích.
Nó xác định vấn đề và hữu ích khi không có bản vá.

Nhưng tôi đề nghị thay vì chỉnh sửa jar, kể từ khi lỗi được khắc phục trong 2.6.1, để tải nó tại địa chỉ: http://book2s.com/java/jar/o/org-eclipse-persistence-moxy/download-org.eclipse.persistence.moxy-2.6.1.html và thay thế nó.
Đừng quên đóng và mở lại bạn IDE.

+0

nó hoạt động, cảm ơn. – Diego

Các vấn đề liên quan