2013-06-12 15 views
0

我用來將我的reg_be obj轉換爲inputstream的代碼。在安靜的web服務中接收對象時出現錯誤

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

然後我通過這個輸入流到web服務。 我的web服務代碼是

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

在Web服務的InputStream無法正常接收,爲什麼? 這種方法正在爲我的圖像inputstream.But工作,但它不工作爲什麼? plz幫助我..

我收到此錯誤:使用

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());我正確地獲取inputstream並顯示1767byte read.but在webservice中,它告訴eof錯誤。並且讀取0字節 – sabarirajan

回答

0

避免Java序列化的Web服務 - 這是非常有限的,並不可取。

改爲使用JSON/XML作爲傳輸格式,這是與語言和平臺無關的。

+0

謝謝bozho。但我必須在參數中傳遞60 varialble,所以它的時間太長了。 – sabarirajan

+0

60個變量並不多。即使你需要一個二進制序列化機制,使用messagepack,這是不依賴於平臺的 – Bozho

+0

ok bozho我會直接發送60變量 – sabarirajan

相關問題