Получение ошибки при получении объекта в спокойном веб-сервисе

Код, который я использовал для преобразования моего объекта reg_be в inputstream.

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);
        }
}

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

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

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)

person sabarirajan    schedule 12.06.2013    source источник
comment
Вы правильно получили inputStream?   -  person shreyansh jogi    schedule 12.06.2013
comment
Что вы имеете в виду под не работает? Что случилось? Пожалуйста, прочитайте tinyurl.com/so-list   -  person Jon Skeet    schedule 12.06.2013
comment
нет jogi.in InputStream is = new ByteArrayInputStream(baos.toByteArray()); Я правильно получаю поток ввода и показывает 1767 байт чтения. Но в веб-сервисе это отображается как ошибка eof. и 0 байт читается   -  person sabarirajan    schedule 12.06.2013
comment
InputStream is = new ByteArrayInputStream(baos.toByteArray()); в самой этой строке я получаю ошибку   -  person sabarirajan    schedule 12.06.2013


Ответы (1)


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

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

person Bozho    schedule 12.06.2013
comment
спасибо божо. но я должен передать 60 переменных в параметре, так что это слишком долго. - person sabarirajan; 12.06.2013
comment
60 переменных не так уж и много. Даже если вам нужен механизм бинарной сериализации, используйте пакет сообщений, который менее зависит от платформы. - person Bozho; 12.06.2013