首先说下问题: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程序的更多相关文章

  1. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  2. Linux Tomcat部署常用命令

    Linux Tomcat部署常用命令 1.连接服务器 2.进入webapps目录:  cd /usr/local/tomcat8080/webapps/ 3.上传文件(war包等):rz 4.删除文件 ...

  3. 在MyEclipse里连接Tomcat部署到项目(maven项目和web项目都适用)

    前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 在Eclipse里连接Tomcat部署到项目(maven项目和 ...

  4. Linux学习心得之 jnlp的文件和java应用程序安全设置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 jnlp的文件和java应用程序安全设置 1.前言2. jnlp的文件打开3.java应用程 ...

  5. 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web

    web proxy web1 web2   1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...

  6. 新浪云部署java web程序 注意事项

    在新浪云新手指南里有部署java的示例,但是对一个新手来说难免会有一些地方犯错,折腾了好长时间才把自己的java web部署到了新浪云.这里主要写一些我遇到的问题与第一次使用新浪云的朋友分享一下. 首 ...

  7. linux tomcat部署 之 jre

    这两天需要在ubantu服务器部署一下tomcat, 本以为轻轻松松就能搞定的事情但是一直不能成功,就tomcat的安装步骤其实就是下载解压的工程,奈何,每次  运行 ./startup.sh之后 显 ...

  8. Linux tomcat 部署war包

    将打包好的 war包放在 webapps的文件夹下 在tomcat/conf 文件夹下的 server.xml 里填加 <Context path="" docBase=&q ...

  9. 在Eclipse里连接Tomcat部署到项目(maven项目和web项目都适用)

    不多说,直接上干货! 前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 我这里以,manven项目为例,当然,w ...

随机推荐

  1. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  2. ASP.NET - 服务器控件button 先执行js 再执行后台的方法

    关于button这个服务器控件,我一直想减少它向服务器提交数据.那些检测,还是在客户端实现就好了.这就需要javascript,但是我发现仅仅有javascript还是不够的.button服务器控件的 ...

  3. Decoding BASE64 in ABAP

    Code Gallery Decoding BASE64 in ABAP Skip to end of metadata Created by Frank Klausner, last modifie ...

  4. python httpConnection详解

    模块urllib,urllib2,httplib的区别 httplib实现了http和https的客户端协议,但是在python中,模块urllib和urllib2对httplib进行了更上层的封装. ...

  5. Thinkphp入门 四 —布局、缓存、系统变量 (48)

    原文:Thinkphp入门 四 -布局.缓存.系统变量 (48) [控制器操作方法参数设置] http://网址/index.php/控制器/操作方法 [页面跳转] [变量调节器] Smarty变量调 ...

  6. C# MVC 自学笔记—2 MVC Movie简介

    MVC Movie是微软官方的一个MVC入门项目,我们可以跟着这个项目来实践入门 这是官方地址 http://www.asp.net/mvc/tutorials/mvc-4/getting-start ...

  7. oracle列合并

    在很多场合,我们会须要用到oracle列合并,oracle提供了一些方法用于把某列的多行数据合并成一行. 一.10G曾经使用WMSYS.WM_CONCAT   wmsys.wm_concat将字段的值 ...

  8. zoj 1107 FatMouse and Cheese(记忆化搜索)

    题目链接:点击链接 题目大意:老鼠从(0,0)出发,每次在同一个方向上最多前进k步,且每次到达的位置上的数字都要比上一个位置上的数字大,求老鼠经过的位置上的数字的和的最大值 #include<s ...

  9. 介绍SAP预留函数创建搜索帮助

    紧接上一节介绍的SAP预定义的出口函数F4IF_SHLP_EXIT_EXAMPLE创建搜索帮助, 该函数主要有两个部分: Changing接口的参数属性如下: SHLP:搜索帮助的基础描述,包括搜索帮 ...

  10. SQL查询语句联系

    建立四个表,分别是学生表,课程表,成绩表和教师信息表 插入信息: 题目: 1. 查询Student表中的所有记录的Sname.Ssex和Class列 select Sname,Ssex,Class f ...