Gwt servlet 在 tomcat 上失败

Posted

技术标签:

【中文标题】Gwt servlet 在 tomcat 上失败【英文标题】:Gwt servlet fails on tomcat 【发布时间】:2014-05-05 13:32:50 【问题描述】:

我可以在码头本地访问我的 Servlet(作为 googlewebtoolkit 运行),

但是当我在Tomcat中部署我的应用程序时

192.0.1.23:8080/test/servlet

并试图运行它,它什么也没显示

这是我的文件 web.xml:

<servlet>  
 <servlet-name>PrintReport</servlet-name>  
 <servlet-class>com.testre.test.server.PrintReport</servlet-class>  
</servlet>  
<servlet-mapping>  
 <servlet-name>PrintReport</servlet-name>  
 <url-pattern>/test/servlet</url-pattern>  
</servlet-mapping>  

我的服务端文件

import java.io.IOException;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperRunManager;

public class PrintReport extends HttpServlet   


    public void doGet(HttpServletRequest request, HttpServletResponse response)
    
    byte[] bytes = null;
    try 

        HashMap hm = new HashMap();
        hm.put("tset", "test");

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        String url = "jdbc:sqlserver://test;instanceName=test;databaseName=test";
        java.sql.Connection conn = DriverManager.getConnection(url, "accenon", "accenon");

        JasperCompileManager.compileReportToFile("test.jrxml","tes.jasper");
        bytes = JasperRunManager.runReportToPdf("tset.jasper", hm, conn);
        sendPDF(response, bytes, "report.pdf");         

     catch (JRException e) 
        e.printStackTrace();
     catch (IOException e) 
        e.printStackTrace();
     catch (ClassNotFoundException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    
    

        void sendPDF(HttpServletResponse response, byte[] bytes, String name) throws IOException
    
        ServletOutputStream stream = null;

        stream = response.getOutputStream();
        response.setContentType("application/pdf");
        response.addHeader("Content-Type", "application/pdf");
        response.addHeader("Content-Disposition", "inline; filename=" + name);
        response.setContentLength((int) bytes.length);
        stream.write(bytes);
        stream.close();
     
  

【问题讨论】:

你得到了什么异常或错误代码? HTTP 状态 404 - /test/servlet 你放在tomcat服务器下的war的名字是什么。 试试192.0.1.23:8080/war_name/test/servlet C:\apache-tomcat-7.0.40\webapps\test\war 【参考方案1】:

您将战争放置在错误的位置。

C:\apache-tomcat-7.0.40\webapps\test\war

war文件夹的所有内容直接放在C:\apache-tomcat-7.0.40\webapps\test文件夹下,去掉多余的war文件夹。

欲了解更多信息,请查看Developing a Web Appliction on Tomcat

【讨论】:

ok thx 的帮助 sp far ,你知道我如何获得绝对路径:GWT.getHostPageBaseURL()+"/"GWT.getModuleBaseURL()+"/"+GWT.getModuleName() +"test.jrxml" 看看GWT - RPC - get servlet absolute path to make dir 阅读GWT getting path of the application

以上是关于Gwt servlet 在 tomcat 上失败的主要内容,如果未能解决你的问题,请参考以下文章

我在 tomcat 上部署了 GWT,现在 RPC 不起作用

servlet 的 GWT RPC 服务分配异常

将带有 RPC 的 GWT 部署到 tomcat 的问题(可能是 web.xml 问题)

在 AWS 中找不到 Servlet

RPC 的 GWT Servlet 模型是单线程模型,还是如何通过 GWT 实现高可用性?

更多 GWT 和 Tomcat 6 安全问题(windows)