highcharts导出服务器无法开箱即用(Java)
向使用Highcharts导出服务器的读者提出以下问题: 我正在尝试运行Highcharts-3.0.2作为Java中的导出服务器。我使用tomcat-7.0.41进行了设置,并尝试使用提供的示例(/demo)。成功加载/demo页面时,向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!! 我在以后的每个请求中都会收到相同的消
生成图像发送请求时,日志显示:
[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
被提取,即使参数为空。但是服务器并没有像预期的那样工作。明确地提供脚本的路径确实有效。希望有人能解释这种行为。