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 ...
随机推荐
- Android开发系列(二十八):使用SubMenu创建选项菜单
大部分手机上边都会有一个"MENU"键,在一个应用安装到手机上之后,能够通过"MENU"显示该应用关联的菜单. 可是,从Android 3.0開始,Androi ...
- poj2418 map 快排水过
/*计算每个单词的百分比按字典序输出*/ #include <cstdio>#include<cstdlib>#include <cstring>#include ...
- org.springframework.core.Ordered接口
关于Ordered接口,用过的人可能知道,这里我谈下自己的理解.也希望各位大神能给予指点. 源码如下: /** * Interface that can be implemented by obje ...
- POJ 1781 In Danger Joseph环 位运算解法
Joseph环,这次模固定是2.假设不是固定模2,那么一般时间效率是O(n).可是这次由于固定模2,那么能够利用2的特殊性,把时间效率提高到O(1). 规律能够看下图: watermark/2/tex ...
- 14.6.3 Grouping DML Operations with Transactions 组DML操作
14.6.3 Grouping DML Operations with Transactions 组DML操作 默认情况下,连接到MySQL server 开始是以启动自动提交模式, 会自动提交每条S ...
- ExtJs4 笔记(10) Ext.tab.Panel 选项卡
本篇讲解选项卡控件. 一.基本选项卡 首先我们来定义一个基本的选项卡控件,其中每个Tab各有不同,Tab的正文内容可以有三种方式获取: 1.基本方式:通过定义html和items的方式. 2.读取其他 ...
- javascript (六) 引用外部js文件
外部的 JavaScript 也可以把脚本保存到外部文件中.外部文件通常包含被多个网页使用的代码. 外部 JavaScript 文件的文件扩展名是 .js. 如需使用外部文件,请在 <scrip ...
- Codeforces Round #350 (Div. 2)解题报告
codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...
- Hbase0.96源码之HMaster(一)
从main()函数開始 public static void main(String [] args) { VersionInfo.logVersion(); new HMasterCommandLi ...
- iOS_10_tableView的简单使用_红楼十二钗
终于效果图: 方式1,用字典数组 BeyondViewController.h // // BeyondViewController.h // 10_tableView // // Created b ...