highcharts导出服务器无法开箱即用(Java)

highcharts导出服务器无法开箱即用(Java),java,highcharts,phantomjs,Java,Highcharts,Phantomjs,向使用Highcharts导出服务器的读者提出以下问题: 我正在尝试运行Highcharts-3.0.2作为Java中的导出服务器。我使用tomcat-7.0.41进行了设置,并尝试使用提供的示例(/demo)。成功加载/demo页面时,向生成图像发送请求时,日志显示: [ERROR] [http-bio-8080-exec-6 07:00:08] (SVGConverter.java:requestServer:109) POOL EXHAUSTED!! 我在以后的每个请求中都会收到相同的消

向使用Highcharts导出服务器的读者提出以下问题: 我正在尝试运行Highcharts-3.0.2作为Java中的导出服务器。我使用tomcat-7.0.41进行了设置,并尝试使用提供的示例(/demo)。成功加载/demo页面时,向
生成图像发送请求时,日志显示:

[ERROR] [http-bio-8080-exec-6 07:00:08] (SVGConverter.java:requestServer:109) POOL EXHAUSTED!!
我在以后的每个请求中都会收到相同的消息

在研究代码时,我发现当应用程序启动时,会执行以下步骤:

  • AbstractPool调用objectfactory来创建新的服务器对象,并将其添加到阻塞队列中

     T object = objectFactory.create();
     queue.add(object);
     poolSize.getAndIncrement();
    
  • 服务器对象是一个新的java.lang.Process对象。创建后,它将侦听inputstream

     process = new ProcessBuilder(commands).start();
     final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
     String readLine = bufferedReader.readLine();
     if (readLine == null || !readLine.contains("ready")) {
        throw new RuntimeException("Error, PhantomJS couldnot start");
    }
    
  • readLine()
    阻塞,控件不会返回,服务器实例也不会添加到队列中。因此,池耗尽了错误。 因此,
    inputstream
    上必须有要读取的内容,以便控件可以继续。我的问题是我错过了什么

    已解决:问题出现在
    app.properties
    中。
    app.properties
    中的参数
    script
    留空时在tomcat中不起作用,或者与文档相反。它是转换器脚本
    highcharts convertor.js
    ,在流程中执行时(请参见上面的代码),会在
    inputstream
    上返回一个字符串

    编辑太早跳枪了!参数
    script
    为空时,其工作原理如文档中所述。我可以在日志中看到:

    [DEBUG] [pool-1-thread-1 01:46:35] (ServerObjectFactory.java:create:33) in makeObject,
    C:\Users\...\webapp\phantomjs, 
    C:/Users/.../workspaces/.../.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/...highcharts-convert.js, 127.0.0.1
    
    我不明白当命令使用所有必需的参数正确构造时会出现什么问题? 为
    app.properties
    中的参数
    script
    显式提供
    highcharts convertor.js
    的完整路径有效

    有人经历过这种行为吗?
    我正在使用eclipse juno service release 2,buildid:20130225-0426,Highcharts-3.0.2,tomcat-7.0.41,win7 64位

    为我们使用jetty或tomcat,我们必须明确给出这两个文件的位置,这是关键,确保应用程序中列出的目标目录中的所有文件。属性文件不是只读的

    exec = C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs/phantomjs.exe
    script = C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs/highcharts-convert.js
    

    C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs
    目录和所有内容未标记为只读。出于某种原因,这使得脚本和phatomjs.exe可以通过WAR执行。

    对于使用jetty或tomcat的我们,我们必须明确给出这两个文件的位置,这是最重要的,请确保应用程序中列出的目标目录中的所有文件。属性文件不是只读的

    exec = C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs/phantomjs.exe
    script = C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs/highcharts-convert.js
    

    C:/jetty-distribution-9.0.3.v20130506/webapps/Scripts/phantomjs
    目录和所有内容未标记为只读。出于某种原因,这允许WAR执行脚本和phatomjs.exe。

    java导出服务器最近更新。我们注意到很多人对phantomJS Java脚本的位置有问题。phantomjs所需的所有javascript文件现在都解压缩到一个临时位置,并从中提取出来供应用程序稍后使用


    这样,您就不必再指定脚本的文件位置

    java导出服务器最近更新。我们注意到很多人对phantomJS Java脚本的位置有问题。phantomjs所需的所有javascript文件现在都解压缩到一个临时位置,并从中提取出来供应用程序稍后使用


    这样,您就不必再指定脚本的文件位置

    已解决app.properties中的问题。参数“script”可以设置脚本位置和phantomjs位置的app.properties设置吗?#phantomjs可执行文件exec=C:\\Users\\xxxx\\Tools\\phantomjs-1.9.1-windows\\phantomjs#phantomjs脚本使用的转换脚本位置=解决了app.properties中的问题。参数“script”可以为脚本位置和phantomjs位置设置app.properties设置吗?#phantomjs可执行文件exec=C:\\Users\\xxxx\\Tools\\phantomjs-1.9.1-windows\\phantomjs#phantomjs脚本使用的转换脚本位置=在日志中我看到脚本即使参数为空,也会拾取
    highchart convert.js
    。但是服务器并没有像预期的那样工作。明确地提供脚本的路径确实有效。希望有人能解释这种行为。在日志中,我看到脚本
    highchart convert.js
    被提取,即使参数为空。但是服务器并没有像预期的那样工作。明确地提供脚本的路径确实有效。希望有人能解释这种行为。