Java Web服务将文件传输到本地系统

时间:2011-10-18 16:41:43

标签: java web-services file soap

我想用两种方法在java中创建一个Web服务

1)通过返回本地URL

将文件从Internet传输到本地文件服务器

2)通过获取网址

从同一服务器检索文件

注意:它应该适用于所有格式

它必须使用Java Web服务..

任何类型:字节数组,十六进制或MIME类型传输都可以

附件的大小是4mb ..

我无法直接连接到数据库,因为应用程序部署在DMZ上,我可以使用Webservices连接到Intranet中文件服务器的唯一方法。

已完成与文件服务器的连接..

3 个答案:

答案 0 :(得分:2)

由于您已使用soap标记了此问题,因此我假设您需要使用Java的SOAP Web服务。这也使JAX-WS(XML Web Services的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>

还要在web.xml文件中添加一些JAX-WS内容,如下所示:

<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 :(得分:1)

类似的情况: is this并且他已经解释了使用短代码

答案 2 :(得分:1)

如果您的主要问题是找到通过Java中的Web服务轻松进行文件传输的提示,我建议使用Hessian服务,在Hessian with large binary data (java)帖子上讨论SO。这里的链接是一个实现一种文件传输的例子。

如果您不想过多地了解Web服务本身的逻辑,那么Hessian是一个很好的解决方案。快速查看一个Hessian代码,你甚至不会认识到你正在使用它。它是如此轻量级的解决方案。

Stefan有一个解决方案,您可以在Web服务逻辑中获得相当多的内容,因此您需要具备多高的抽象级别。如果这个任务的目的是展示如何使用Web服务而不仅仅是让它工作,那么Stefan就有了答案。

关于文件上传等,您想要从互联网保存文件。看看这个:How to download and save a file from Internet using Java?。这使用纯Java,在我的理解中,不需要任何Web服务来完成给定的任务,但是如果你将这两者结合起来,你会得到一些非常容易的东西!