我想用两种方法在java中创建一个Web服务
1)通过返回本地URL
将文件从Internet传输到本地文件服务器2)通过获取网址
从同一服务器检索文件注意:它应该适用于所有格式
它必须使用Java Web服务..
任何类型:字节数组,十六进制或MIME类型传输都可以
附件的大小是4mb ..
我无法直接连接到数据库,因为应用程序部署在DMZ上,我可以使用Webservices连接到Intranet中文件服务器的唯一方法。
已完成与文件服务器的连接..
答案 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服务来完成给定的任务,但是如果你将这两者结合起来,你会得到一些非常容易的东西!