linux tomcat部署含有matlab画图打包的java web程序
首先说下问题:matlab可以把相关算法代码打包成jar文件共java调用,本例使用的jar文件的作用是画图并保存,然后部署在linux的tomcat中进行发布。这里出现了一个问题,具体如下:linux机器是在我的虚拟机上面(可以作为一个远程服务器A),所以我使用xmanager连接A机器,然后启动tomcat进行web程序的部署,然后使用浏览器访问发布的web程序,然后运行测试ok。但是,当我发布tomcat程序后把xmanager关闭后,再次访问web程序,出现错误,保存不了图片。(另外,如果我是在A服务器上面打开terminal进行tomcat web程序的发布,然后关闭terminal,这样的操作是没有问题的,web测试一样ok)
后台报错如下:
unable to open display 'localhost:10.0' You will not be able to display graphics on the screen
其中一个相关的mathwork帖子如下: http://www.mathworks.com/matlabcentral/newsreader/view_thread/308200,不过好像没有答案;
解决方案1:使用远程桌面,配置xmanager的远程桌面到A服务器(具体可以参考:http://www.hack520.com/linux-xmanager-xbrowser/ , 没有亲自试过,好像很麻烦的样子),然后打开一个终端,进行tomcat的web发布,然后关闭xmanager。看web测试是否ok,如果ok,说明此种方案是ok。(这种方案lz还没有测试过);
解决方案2:使用screen。看问题,感觉是关闭了一些不该关闭的东西,使用screen可以后台运行tomcat,这个应该是和服务器A里面发布tomcat一样的,所以这种方案可实现的可能性应该比较大,关于screen的参考:http://hi.baidu.com/widebright/item/e17061c3c44660bb0c0a7b6a ,这个screen安装也有点麻烦(yum使用有问题,所以这种方案lz也没有测试过);
解决方案3:从源头出发,在使用matlab打包的时候,首先进行java文件对jar中的算法进行测试,然后才使用web的jsp页面调用的;但是在java调用中会出现下面的警告:
Warning: 2 invisible figure(s) exist at MCR termination. If your application has terminated unexpectedly, please note that
applications generated by the MATLAB Compiler terminate when there are no
visible figure windows. See the documentation for WaitForFiguresToDie and
WAITFORCALLBACKS for more information. Warning: Class
'graph2d.lineseries'
in use at MCR termination. If your application has terminated unexpectedly, please note that
applications generated by the MATLAB Compiler terminate when there are no
visible figure windows. See the documentation for WaitForFiguresToDie and
WAITFORCALLBACKS for more information. Warning: Class
'scribe.legend'
in use at MCR termination.
。。。
这个的大概意思是说当没有可视化的图像是,由matlab compiler编译的程序会意外终止,所以lz就上网找,找到了一篇关于c++的,如下: http://blog.csdn.net/owldestiny/article/details/4210177,我仿造他的方式(我的是java),修改了matlab的源码在plot函数前面加入了waitforcallbacks(true)然后在plot函数后面加上了pause(5);close(f)waitforcallbacks(false);(这里设置visible为true,之前都是设置visible为false的,这样可以避免弹出画图的窗口,而直接保存)意思和c++的那篇差不多,然后使用java 文件进行测试ok,没有出现警告信息。但是当我使用web发布的时候关闭xmanager还是不行。所以这种方案应该不适合。(lz亲测)
解决方案4:偶然的灵感,我在想可否使用xmanager首先登陆到虚拟机B然后再由虚拟机B登陆到虚拟机A上面,然后发布程序,然后关闭xmanager,这样是否可以行呢?经过lz的测试,发现这种方案是可行的,可以访问且能保存图像。
说明:如果要在linux上面发布tomcat程序(含有matlab打包的jar文件的时候),需要首先配置环境,即matlab的环境,具体可以参考lz之前的相关blog;
分享,快乐,成长
转载请注明出处:http://blog.csdn.net/fansy1990
linux tomcat部署含有matlab画图打包的java web程序的更多相关文章
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...
- Linux Tomcat部署常用命令
Linux Tomcat部署常用命令 1.连接服务器 2.进入webapps目录: cd /usr/local/tomcat8080/webapps/ 3.上传文件(war包等):rz 4.删除文件 ...
- 在MyEclipse里连接Tomcat部署到项目(maven项目和web项目都适用)
前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 在Eclipse里连接Tomcat部署到项目(maven项目和 ...
- Linux学习心得之 jnlp的文件和java应用程序安全设置
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 jnlp的文件和java应用程序安全设置 1.前言2. jnlp的文件打开3.java应用程 ...
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- 新浪云部署java web程序 注意事项
在新浪云新手指南里有部署java的示例,但是对一个新手来说难免会有一些地方犯错,折腾了好长时间才把自己的java web部署到了新浪云.这里主要写一些我遇到的问题与第一次使用新浪云的朋友分享一下. 首 ...
- linux tomcat部署 之 jre
这两天需要在ubantu服务器部署一下tomcat, 本以为轻轻松松就能搞定的事情但是一直不能成功,就tomcat的安装步骤其实就是下载解压的工程,奈何,每次 运行 ./startup.sh之后 显 ...
- Linux tomcat 部署war包
将打包好的 war包放在 webapps的文件夹下 在tomcat/conf 文件夹下的 server.xml 里填加 <Context path="" docBase=&q ...
- 在Eclipse里连接Tomcat部署到项目(maven项目和web项目都适用)
不多说,直接上干货! 前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 我这里以,manven项目为例,当然,w ...
随机推荐
- CDialogBar(对话条)和CReBar(伸缩条)的编程
对话条是工具栏和无模式对话框相结合的产物,对话条和对话框类似,包含有标准的Windows控件,并且可以通过创建对话框模板来表示对话条. 伸缩条功能很强大,我们可以在伸缩条中直接增加CToolBar,C ...
- Flash Builder 条件编译的实现
最近项目需要开发多个版本, 而Flash又没有像C++ 那样的 #ifdef, 来让一套代码支持多个版本的编译发布; 经过研究, 终于知道Flash Builder如何支持条件编译: 1. 在项目 ...
- cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题
============================================================ 博文原创,转载请声明出处 电子咖啡-专注于移动互联网 ============ ...
- 每天一个JavaScript实例-推断图片是否载入完毕
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- ALV预警灯图标代码
需要先引用TYPE-POOLS: slis,icon. ICON_LED_GREEN 绿灯 ICON_LED_RED红灯 ICON_LED_YELLOW黄灯
- javascript 判断微信浏览器
原文:javascript 判断微信浏览器 用js判断当前环境是否是是微信内置浏览器有两个方法: 1.判断useragent 2.判断是否支持微信内置浏览器才支持的一些方法,比如WeixinJSBri ...
- 移动App-UI配制篇
杂志app-UI配制篇 背景 现在公司有需求是关于杂志app,里面每个页面可能有不同的展现方式,不同的内容,不同的操作方式.那么这里就有一个需求就是根据用户定制这些不同的展现方式,不同的内容,不同的操 ...
- Swift - 给表格添加编辑功能(删除,插入)
1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态 (3)点击删除图标,删 ...
- 8个实用的SVG工具,20 个有用的 SVG 工具,五款超实用的开源SVG工具
8个实用的SVG工具 [导读] 你还在为没有好用的SVG工具而发愁吗?开发人员的福音来啦!小编为大家收集罗列了8款实用的SVG工具,让我们一起来看看吧! SVG可缩放矢量图形(Scalable Vec ...
- “HTTP 错误 401.1 - 未授权:登录失败” iis配置和权限问题
今天,将项目发布到IIS服务器上,出现此问题,本地IIS访问正常. 登录失败说明根本登录不了,谈何访问网页,所以要从两方面下手,一.账户:二.账户权限: 一.设置你网站属性的时候,目录安全性-匿名访问 ...