2011-10-18 85 views
1

我想在Java中創建一個Web服務有兩個方法的Java Web服務,文件傳輸到本地系統

1)通過返回本地URL文件從互聯網轉移到本地文件服務器

2)通過採取URL

注意檢索來自同一服務器上的文件:它應該與所有的格式

工作,它必須使用Java Web服務..

任何類型:字節數組,十六進制或MIME類型的傳輸是OK

附件的大小爲4MB ..

直接,因爲應用程序部署在DMZ和我唯一的辦法,我無法連接到數據庫可以通過使用Webservices連接到Intranet中的文件服務器。

連接到文件服務器已經完成..

+0

我們在談論什麼尺寸的文件,它有一個安全方面嗎? – Stefan

+0

大小將小於2mb,而對於web服務則不會有任何安全問題 –

+0

請查看http://www.ibm.com/developerworks/xml/library/x-tippass/。我曾與WebServices合作過,幾年前我的解決方案是用於更大的文件並使用RMI。 – Stefan

回答

2

由於您已將此問題標記爲soap,因此我將假設您需要Java中的SOAP Web服務。這也使JAX-WS(XML Web服務的Java API)成爲圖書館使用的自然選擇。 Java(TM) Web Services Tutorial將更詳細地涵蓋您的問題。

現在您將需要實現邏輯來拍攝圖像並返回URL,並獲取URL並返回圖像。

@WebService 
public class MyJavaWebService { 
    @WebMethod 
    public String takeImage(byte[] image, String imageName) { 
     //You'll need to write a method to save the image to the server. 
     //How you actually implement this method is up to you. You could 
     //just open a FileOutputStream and write the image to a file on your 
     //local server. 
     this.saveImage(image, imageName); 
     //Here is where you come up with your URL for the image. 
     return this.computeURLForImage(imageName); 
    } 
    @WebMethod 
    public byte[] getImage(String url) { 
     final byte[] loadedImage = this.getImage(url); 
     return loadedImage; 
    } 
} 

您還可能需要設置一些額外的配置,如Deploying Metro Endpoint中所述。這篇文章的要點是,你需要一個sun-jaxws.xml文件添加到您的WEB-INF/文件夾形式的

<endpoints 
     xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" 
     version="2.0"> 
    <endpoint 
      name="MyJavaWebService" 
      implementation="com.mycompany.MyJavaWebService" 
      url-pattern="/MyJavaWebService"/> 
</endpoints> 

而且還添加一些JAX-WS的東西你web.xml文件像這樣:

<web-app> 
    <listener> 
     <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> 
    </listener> 
    <servlet> 
    <servlet-name>MyJavaWebServiceServlet</servlet-name> 
     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MyJavaWebServiceServlet</servlet-name> 
     <url-pattern>/MyJavaWebService</url-pattern> 
    </servlet-mapping> 
</web-app> 

最後,將所有東西打包成.war文件,並將其部署到Java Web服務器(例如Tomcat)。

1

如果你的主要問題是找到了一個簡單的網絡文件傳輸的提示服務在java中,我會推薦Hessian服務,在SO上討論Hessian with large binary data (java)後。這裏的鏈接是一個實現一種文件傳輸的例子。

黑森州是一個很好的解決方案,如果你不想用Web服務本身的邏輯弄得太多。迅速查看Hessian代碼,您甚至不會意識到您正在使用它。它是如此輕量級的解決方案。

Stefan提供了一個解決方案,您可以在其中獲得相當多的Web服務邏輯,因此取決於您想要的抽象級別。如果這個任務的重點是要展示如何使用Web服務,而不是讓它工作,那麼Stefan就有了答案。

關於文件上傳等,你想從互聯網上保存文件。看看這個:How to download and save a file from Internet using Java?。這使用純Java,根據我的理解,不需要任何Web服務來完成給定的任務,但是如果將這兩者結合起來,就可以輕鬆實現某些功能!

相關問題