部署没有复杂应用程序服务器的Web服务(例如Tomcat)

时间:2016-12-16 15:05:37

标签: java web-services rest tomcat jax-rs

我正在关注tutorial以基于JAX-RS在java中开发RESTful Web服务。我修改了POST方法,以便从客户端上传文件到服务(请参阅下面的代码)。在教程中,.WAR包已部署到tomcat apache服务器中。

我的应用程序非常简单,只需使用POST方法。我只有一个客户端,不需要用户管理。 RESTful是无状态的,因此不需要缓存。对我来说,一个完整的誓言tomcat似乎是多余的。

我已经在embedded-serverserver-2找到了不同的答案,他们建议在Java中创建一个主要方法,使用jax-ws监听某个端口。

javax.xml.ws.Endpoint.publish("http://localhost:8000/myService/", myServiceImplementation); 

我怀疑这个简单的解决方案会出错,可能是我想念一些安全相关的东西?它会降低服务的可靠性吗?如果我使用一个简单的解决方案而不是完整的承诺tomcat,有人可以解释会出现什么问题吗?

@Path("/file")
public class RESTfulHelloWorld 
{

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) 
{
    //String uploadedFileLocation = "d:/uploaded/" + fileDetail.getFileName();
    String uploadedFileLocation = "d:/test.txt";
    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);
    String output = "File uploaded to : " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}
private void writeToFile(InputStream uploadedInputStream,
    String uploadedFileLocation) 
{
    try {
        OutputStream out = new FileOutputStream(new File(
                uploadedFileLocation));
        int read = 0;
        byte[] bytes = new byte[1024];
        out = new FileOutputStream(new File(uploadedFileLocation));
        while ((read = uploadedInputStream.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

0 个答案:

没有答案