用Tomcat作为应用服务器的WEB应用程序的远程维护问题,请大家指教。

zhongzuo1981 2008-02-21 03:47:48
软件环境:win2003server,tomcat5.0.28,jdk1.4.02,sqlserver2005
现在的情况是:
服务器除了可以通过http方式访问以外,其他如pcanywhere,ftp,等等,都不可以(机房的变态要求)。
导致维护程序只能去现场,哪怕是更新一个jsp。

后来做了一个上传文件到指定文件夹的页面,并且通过tomcat的manager来reload服务。
但新的问题出现了,reload几次,tomcat就java.lang.OutOfMemoryError,只能把服务关了再重启。

查了一下,改了catalina.bat,加了set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=128m.
好像可以多reload几次了,但还是会溢出。

现在有个想法:
1、再启一个tomcat,做个页面,能够读取应用程序那个tomcat的日志文件,来监控其运行状态;
2、做三个按钮,一个运行那个tomcat\bin\startup.bat,一个运行shutdown.bat,再一个删除那个tomcat的work文件夹。

尝试了一下,Runtime.getRuntime().exec("cmd.exe /c start D:\\tomcat\\bin\\startup.bat") ;
新打开的tomcat控制台输出一堆错误就关闭了。

希望给位高手看看这个想法是否可行,应该如何运行startup.bat?
或者,还有没有其他方法来做远程维护?

谢谢大家!
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongzuo1981 2008-02-25
  • 打赏
  • 举报
回复
郁闷,还是没啥进展……
zhongzuo1981 2008-02-22
  • 打赏
  • 举报
回复
谢谢上面的指教。
我建立了两个bat文件
re1.bat
set JAVA_HOME=C:\Sun\AppServer\jdk
set CATALINA_HOME=D:\tomcatWeb
call %CATALINA_HOME%\bin\shutdown.bat

re2.bat
set JAVA_HOME=C:\Sun\AppServer\jdk
set CATALINA_HOME=D:\tomcatWeb
call %CATALINA_HOME%\bin\startup.bat

tomcatWeb的端口是8080
又启动了一个tomcatReLoad,端口是9080,建一个页面,执行
Runtime run = Runtime.getRuntime();
run.exec("c:\\re1.bat");
或是
run.exec("c:\\re2.bat");

现在的问题是不管运行哪个bat,都是对tomcatReLoad这个tomcat启作用。而我明明设置了
set CATALINA_HOME=D:\tomcatWeb

有高手知道原因么?
Squall1009 2008-02-21
  • 打赏
  • 举报
回复
查下configure文件好了

尝试了一下,Runtime.getRuntime().exec("cmd.exe /c start D:\\tomcat\\bin\\startup.bat") ;

这样有问题应该是环境变量有问题。

只要例外一个tomcat run的人的权限足够就都可以做就是有些烦,你都可以自己写个text接受你输入的命令。
zhongzuo1981 2008-02-21
  • 打赏
  • 举报
回复
试了一下,和我刚才的结果一样,运行后tomcat报以下错误。
2008-2-21 16:17:12 org.apache.coyote.http11.Http11Protocol init
严重: Error initializing endpoint
java.net.BindException: Address already in use: JVM_Bind:8080
at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoi
nt.java:264)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:137)

at org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.
java:1429)
at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:609)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a:2384)
at org.apache.catalina.startup.Catalina.load(Catalina.java:507)
at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)
2008-2-21 16:17:12 org.apache.catalina.startup.Catalina load
严重: Catalina.start
LifecycleException: Protocol handler initialization failed: java.net.BindExcept
ion: Address already in use: JVM_Bind:8080
at org.apache.coyote.tomcat5.CoyoteConnector.initialize(CoyoteConnector.
java:1431)
at org.apache.catalina.core.StandardService.initialize(StandardService.j
ava:609)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.jav
a:2384)
at org.apache.catalina.startup.Catalina.load(Catalina.java:507)
at org.apache.catalina.startup.Catalina.load(Catalina.java:528)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:250)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:424)
2008-2-21 16:17:12 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1359 ms

-----
然后就自己关闭了,好像是8080端口的问题。
应用程序那个tomcat已经改成80端口了,不知道为什么?
zhongzuo1981 2008-02-21
  • 打赏
  • 举报
回复
是政府机房,啥都不让连。已经明确告知“要维护来现场”。
去机房的直线距离得10KM左右,再加上北京的交通,吐血了快……
老紫竹 2008-02-21
  • 打赏
  • 举报
回复
另外,远程桌面也不可以吗??
老紫竹 2008-02-21
  • 打赏
  • 举报
回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧