/**
 * 转换PDF功能
 * @throws Exception
 * @throws DocumentException
 */
@SuppressWarnings("unchecked")
public void print() throws Exception,DocumentException {

// 获取packageId 并保存至session
String packageId = Struts2Util.getRequest().getParameter("packageId");         
Struts2Util.getSession().setAttribute("packageId", packageId);

// covert pdf
HttpURLConnection con = null;
        URL url = null;
        try
        {
String sessionid = Struts2Util.getRequest().getSession().getId();
            url = new URL("http://127.0.0.1:8080/scm/shipments!viewPackingSlip.action"); 
//url = new URL("http://10.168.2.182:8080/scm/shipments!viewPackingSlip.action"); 
            con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("Cookie","JSESSIONID="+sessionid);              con.connect();
            int size = 0;
            byte[] buf = new byte[1024];            BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
            StringBuffer sb = new StringBuffer();
            while ((size = bis.read(buf)) != -1)
            {
                sb.append(new String(buf, 0, size));
                
            }
            
            System.out.println(sb.toString());
            bis.close();
            con.disconnect();
            
            HttpServletResponse response = Struts2Util.getResponse();
response.setContentType("APPLICATION/DOWNLOAD");
response.setHeader("Content-Disposition", "attachment; filename="+ "PackingSlip.pdf");// PackingSlip是文件名
java.io.OutputStream os = response.getOutputStream();
List headerFooterList = new ArrayList();
Map properties = new HashMap();
CYaHPConverter converter = new CYaHPConverter();
String ss = "http://127.0.0.1:8080/scm/stylesheet/";
//String ss = "http://10.168.2.182:8080/scm/stylesheet/";
converter.convertToPdf(sb.toString(), IHtmlToPdfTransformer.A4P,headerFooterList, ss, os, properties);
System.out.print("Converter Success!");
os.flush();
os.close();
response.flushBuffer();         }catch (IOException e)
        { }
        
}

解决方案 »

  1.   

    在tomcat下正常
    在jboss下页面报 :
    Firefox  无法找到我的这个print.action   汗!!~~~后台报错:
    HTTP Status 500 - Unable to show problem report: java.lang.IllegalStateException
      

  2.   

    HTTP Status 500 - Unable to show problem report: java.lang.IllegalStateException
    呵呵,不兼容,详细分析下具体的问题,才能找到解决办法,楼主发个错误,也这么吝啬!
      

  3.   

    错误信息:17:14:25,093 ERROR [STDERR] java.net.ConnectException: Connection refused: conne
    ct
    17:14:25,093 ERROR [STDERR]     at java.net.PlainSocketImpl.socketConnect(Native
     Method)
    17:14:25,093 ERROR [STDERR]     at java.net.PlainSocketImpl.doConnect(PlainSocke
    tImpl.java:333)
    17:14:25,093 ERROR [STDERR]     at java.net.PlainSocketImpl.connectToAddress(Pla
    inSocketImpl.java:195)
    17:14:25,093 ERROR [STDERR]     at java.net.PlainSocketImpl.connect(PlainSocketI
    mpl.java:182)
    17:14:25,093 ERROR [STDERR]     at java.net.Socket.connect(Socket.java:519)
    17:14:25,093 ERROR [STDERR]     at java.net.Socket.connect(Socket.java:469)
    17:14:25,093 ERROR [STDERR]     at sun.net.NetworkClient.doConnect(NetworkClient
    .java:157)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.http.HttpClient.openServer(HttpCl
    ient.java:394)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.http.HttpClient.openServer(HttpCl
    ient.java:529)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.http.HttpClient.<init>(HttpClient
    .java:233)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.http.HttpClient.New(HttpClient.ja
    va:306)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.http.HttpClient.New(HttpClient.ja
    va:323)
    17:14:25,093 ERROR [STDERR]     at sun.net.www.protocol.http.HttpURLConnection.g
    etNewHttpClient(HttpURLConnection.java:788)
      

  4.   

    连接拒绝试试这个:在 jboss4.2及以后的版本中,默认情况下jboss只接收来自localhost或127.0.0.1的请求,也就是只接收本地的访问。为了使 jboss接收来自其他地址的请求,在启动jboss时需要使用-b命令行参数进行设置。如下面的启动命令所示:run.bat -b 200.200.200.123
    run.bat -b 0.0.0.0   上面的第一行命令表示jboss可以接收来自200.200.200.123的请求。第二条命令表示jboss可以接收来自任意地址的请求。如果不设置-b参数,以非本机方式访问EJB时,JBoss会抛出上面异常。
      

  5.   

    服务器是   
    linux平台的分配的一个虚拟机地址10.168.2.182我们一直都是采用run.bat -b 0.0.0.0 这种方式启动的
      

  6.   

    ---本地 jboss
    Firefox 无法在 http://127.0.0.1:8080/scm/shipments!print.action?packageId=3277 找到该文件。--服务器 jboss
    Firefox 无法在 http://10.168.2.182:8080/scm/shipments!print.action?packageId=3277 找到该文件。
    提示找不到print.action,可是在jboss的运行后台却执行了print()方法中的内容
    很是怪异难道tomcat和jboss的运行机制不同,这个程序再tomcat下跑的是正常的,可以正常下载和在线打开pdf