2013-06-12 4 views
0

Код, который использовался для преобразования моего reg_be obj в inputstream.Получение ошибки при получении объекта в restful webservice

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ObjectOutputStream oos = new ObjectOutputStream(baos); 
    oos.writeObject(reg_be); 
    oos.flush(); 
    oos.close(); 
    InputStream is = new ByteArrayInputStream(baos.toByteArray()); 

Затем я передаю этот входной поток в веб-сервис. Мой код веб-сервис

public String getText(@Context HttpServletRequest request) throws IOException { 
     // 
    Registration_BE reg_be=new Registration_BE(); 

InputStream in=request.getInputStream();

ObjectInputStream ois = new ObjectInputStream(in); 
     try { 
      reg_be=(Registration_BE) ois.readObject(); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(CustomerregistrationResource.class.getName()).log(Level.SEVERE, null, ex); 
     } 
} 

В сервис InputStream веб не получает правильно, почему? Этот метод работает для моего входного потока изображений. Но для этого объекта он не работает, почему? плз помогите мне ..

я получаю эту ошибку:

SEVERE: Servlet.service() for servlet [ServletAdaptor] in context with path [/UnionClubWS] threw exception [java.io.EOFException] with root cause 
java.io.EOFException 
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2304) 
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2773) 
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:798) 
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298) 
    at webservices.customer.CustomerregistrationResource.getText(CustomerregistrationResource.java:80) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:168) 
    at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:233) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 
+0

Вы правильно поняли inputStream? –

+1

Что вы подразумеваете под «не работает»? Что не так? Пожалуйста, прочитайте http://tinyurl.com/so-list –

+0

no jogi.in InputStream is = new ByteArrayInputStream (baos.toByteArray()); я получаю входной поток правильно и его показываю 1767 байт read.but в webservice его говоря как ошибка eof. и 0 байт считывается – sabarirajan

ответ

0

Избегайте использования сериализация для веб-сервисов - это очень ограничивает и не рекомендуется.

Используйте JSON/XML как транспортный формат, который не зависит от языка и платформы.

+0

спасибо bozho. но я должен передать 60 varialble в параметре, поэтому его слишком долго, так что только. – sabarirajan

+0

60 переменных не так много. Даже если вам нужен механизм двоичной сериализации, используйте messagepack, который меньше зависит от платформы – Bozho

+0

ok bozho i ll send 60 variable напрямую – sabarirajan

Смежные вопросы