在Fi-Cloud的CEP开发过程中,我遇到了一个反复发生的问题。当我正在尝试开发执行任务的定义时,CEP的服务器和创作工具停止响应,尽管ssh仍然响应。
这个问题随着我的发展而发生。我正在使用AuthoringTool逐位更改定义,然后通过创作工具的导出功能将其重新上传到服务器。 每次我更改质子时都要使用新定义重新启动质子,我使用Google的Postman进行这一操作:
-PUT(url: http:// {ip}:8080 / ProtonOnWebServerAdmin / resources / instances / ProtonOnWebServer ) header:'Content-Type':'application / json';正文:{“action”:“ChangeDefinitions”,“definitions-url”:“/ ProtonOnWebServerAdmin / resources / definitions / Definition_Name”}
同时,我使用三个ssh进行了登录,一个用于监视在/ opt / tomcat10 / sample /和其他内容上创建的文件,另外两个用于'tail -f'日志文件定义写入,在处理事件时:接收事件的一个日志和EPAgent检测到的事件的另一个日志。
我正在一遍又一遍地重复这些过程,因为我正在开发并最终使用CEP服务器和创作工具停止响应。
通过“拖尾”tomcat的日志文件(#tail -f /opt/tomcat10/logs/catalina.out)我可以看到,在这种情况下,如果我尝试一下:
-GET(url: http:// {ip}:8080 / ProtonOnWebServerAdmin / resources / instances / ProtonOnWebServer ) 我没有回复,tomcat记录以下响应:
11452100 [http-bio-8080-exec-167] ERROR org.apache.wink.server.internal.RequestProcessor - An unhandled exception occurred which will be propagated to the container.
java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-bio-8080-exec-167" java.lang.OutOfMemoryError: PermGen space
Ssh仍然响应,我可以通过这种方式查看tomcat的日志。 为了克服这个并继续,我退出ssh连接并重新启动Fi-Cloud中的CEP实例。
我正在使用的程序是否重新上传并重新运行定义?我应该采用不同的方法来开发吗?
答案 0 :(得分:1)
当您更新CEP已经使用的定义,并且您希望CEP引擎使用更新的定义时,您需要:
使用创作工具导出导出定义(正如您所做)
使用REST PUT停止引擎运行
PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer
{"action":"ChangeState","state":"stop"}
使用REST PUT启动引擎
PUT //host:8080/ProtonOnWebServerAdmin/resources/instances/ProtonOnWebServer
{"action":"ChangeState","state":"start"}
您无需激活“ ChangeDefinitions”操作,因为它与引擎已在使用的定义名称相同。
激活“ChangeDefinitions”操作,仅影响下一次CEP运行,并且对当前运行没有影响。
这回答了有关如何更新CEP定义的问题。 希望它能解决你的问题。