2012-08-17 33 views
1

我使用cxf開發了一個java soap客戶端。這個應用程序工作正常,我用它包含的jdk v6運行它。我創建的服務,例如將圖像上傳到magento安裝,但在這裏我將介紹該問題。打開JDK 7和Oracle JDK 7 Soap客戶端

在Apache Cxf中,我轉而分塊以避免「殘缺」xml請求。 現在我經歷了這種情況,我的客戶端應用程序不會在Ubuntu發行版上運行,因爲打開了jdk。我通過安裝openjdk 7和oracle jdk 7在我的mac上測試了這個,並且出現了同樣的錯誤。

儘管如此,我轉向了將來自客戶端的請求分塊,因此上傳失敗。

我讀過這可能是openjdk和一些xml-libs的問題,但我找不到有關此主題的任何真正準確甚至有用的信息。

也許有人可能幫助我。

在此先感謝。

這是請求和響應:

 

ID: 5 
Address: http://dev.magento.com/index.php/api/v2_soap/index/ 
Encoding: UTF-8 
Content-Type: text/xml 
Headers: {Accept=[*/*], 
SOAPAction=[""]} 
Messages: Outbound Message (saved to tmp file): 
Filename: 
/var/folders/z6/91v2ntss00s1786v_1_5y2540000gn/T/cxf-tmp-636617/cos5007091721474555391tmp 
(message truncated to 102400 bytes) 

Payload: 

    
     
      552f069112dde557bc577735fc4eb8bf 
      5540 
      
       
        
         /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQ 
-------------------------------------- 
14168 [main] INFO 
org.apache.cxf.services.MagentoService.Mage_Api_Model_Server_Wsi_HandlerPort.Mage_Api_Model_Server_Wsi_HandlerPortType 
- Inbound Message 
---------------------------- 
ID: 5 
Response-Code: 200 
Encoding: UTF-8 
Content-Type: text/xml; charset=UTF-8 
Headers: {Cache-Control=[max-age=31536000], connection=[close], 
Content-Length=[275], content-type=[text/xml; charset=UTF-8], 
Date=[Fri, 17 Aug 2012 12:52:16 GMT], Expires=[Sat, 17 Aug 2013 
12:52:16 GMT], Server=[Apache], Vary=[Accept-Encoding]} 
Payload: 

    
     
      102 
      Ungültiger Bildtyp. 
     
    


-------------------------------------- 

下面是一個跟蹤:

 

javax.xml.ws.soap.SOAPFaultException: unsupported imagetype 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156) 
    at $Proxy28.catalogProductAttributeMediaCreate(Unknown Source) 
    at at.myproject.soap.service.product.media.ProductAttributeMediaServiceImpl.create(ProductAttributeMediaServiceImpl.java:61) 
    at at.myproject.magento.service.sync.product.ProductSyncServiceImpl.updateProduct(ProductSyncServiceImpl.java:275) 
    at at.myproject.magento.service.sync.product.ProductSyncServiceImpl.updateProducts(ProductSyncServiceImpl.java:185) 
    at at.myproject.magento.service.sync.product.ProductSyncServiceImpl.syncronize(ProductSyncServiceImpl.java:145) 
    at at.myproject.magento.scheduler.jobs.ProductSyncJob.execute(ProductSyncJob.java:21) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) 
Caused by: org.apache.cxf.binding.soap.SoapFault: Ungültiger Bildtyp. 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75) 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46) 
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) 
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) 
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1656) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1521) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1429) 
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:659) 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) 
    ... 8 more 
+0

你有一個堆棧跟蹤?是否知道JDK的哪一部分會導致失敗? – 2012-08-17 12:45:07

+0

最後我得到這篇文章的格式正確! – stereoscope 2012-08-17 12:59:08

+0

如果你想知道:http://stackoverflow.com/editing-help – 2012-08-17 13:00:39

回答

1

我可以通過添加這些庫到我的POM解決此問題,

<dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-xjc</artifactId> 
     <version>2.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
     <version>2.2.1</version> 
    </dependency> 

,在諮詢Apache's CXF的常見問題後。

我使用OS X的最新jdk 6和新的openjdk7和oracle jdk7進行了集成測試。