linux系统下was平台更新web项目
多个class文件直接替换web-inf/classes下面的class文件,使用linux命令“stopServer.sh server1”和“startServer.sh server1”命令停止再重启服务更新文件生效。
但是使用websphere控制台重启应用后只有一个class文件不生效。
请问这是什么原因啊?应该怎么解决呢?
这个现象确实有点奇怪。
正常情况下,WAS会自动加载web-inf/classes下面的class文件,如果class文件发生变化,WAS会自动检测到,并进行加载。当然,Server重启后,也会重新加载。不应该出现其中一个class不生效,其他class生效的情况。
不知道是否可以针对下面两个问题,提供更详细的说明:
1、不生效的那个class有什么特殊的地方吗?
每次更新的时候,是同一个class不生效,还是不同的class不生效?
不生效的Class中是不是调用了动态库(so或者dll)之类的内容?
2、您说的重启应用,指的是在控制台上停止应用,然后在启动应用吧,不是把Was的Server重启吧?
3、您使用的WAS是ND版本,还是单Server的版本?
一定要注意class中是否调用了动态库,如果有的话,那么重启应用是不会生效的,一定要重启Server。
收起追问
1、不生效的那个class有什么特殊的地方吗?
每次更新的时候,是同一个class不生效,还是不同的class不生效?
回答:每次更新的时候,是同一个class不生效。
不生效的Class中是不是调用了动态库(so或者dll)之类的内容?
回答:没有调用动态库。
2、您说的重启应用,指的是在控制台上停止应用,然后在启动应用吧,不是把Was的Server重启吧?
回答:重启应用是在控制台上停止应用,然后在启动应用,不是把Was的Server重启。
3、您使用的WAS是ND版本,还是单Server的版本?
回答:ND版本。
class文件生效操作步骤:
执行/opt/IBM/WebSphere/AppServer/Profiles/DefaultAppSrv01/bin目录下的stopServer.sh和startServer.sh脚本重启。
class文件不生效操作步骤:
控制台上停止应用,然后在启动应用。
另外,执行linux命令重启后生效,但再去控制台重启应用class文件又会变成更新之前的。
收起