同一服务器,不同的数据库,端口不同
在浏览器上同时打开两个页面时报Communication problem
你好,看看下面我的理解对不对:
- 一台服务器上,部署了两个相同的服务。
- 两个服务有各自的数据库。
- 两个服务对外通过不同的端口提供服务。
- 这种情况下,访问 CUBA UI 出现 communication problem。
是的,在同一浏览器里打开一个页面后,再打开另一个第一个就会communication problem,然后再点第一个时第二个又会communication problem
不同浏览器中打开是正常的
有用到负载均衡吗?cuba 程序是运行在 tomcat 内,还是有别的中间件?
两个都是使用docker启动的
ip:port1/app1
ip:port2/app2
我记得app1 app2不能一样。 你先手动测试一下,应该跟docker关系不大,人工起两个cuba服务测测app1 app2是不是必须不同。
如果证明了是app1 app2的问题:
因为你已经打到docker里了,webapp下的app app-core不能变化了。 这里假定你用的tomcat:
你可以在tomcat的conf/server.xml 里配置一下:
<Context crossContext="true" docBase="/yourlocation/webapps/app" path="/${app.id}" />
<Context crossContext="true" docBase="/yourlocation/webapps/app-core" path="/${app.id}-core">
这样通过 ip:port/${app.id} 访问你的服务,tomcat会给你匹配到webapps/app。
更具体的搜索下crossContext的定义和配置。
{app.id}怎么定义? 在启动docker的时候传一个变量APP_ID 给 docker容器:
docker run -d -t -i \
-e APP_ID=${APP_ID} \
在docker容器你指定的run.sh里把上面的APP_ID传给tomcat:
export JAVA_OPTS="$JAVA_OPTS \
-Dapp.id=${APP_ID} \
这样tomcat就知道 {app.id}的值了。
由于改变了cuba的app,连带需要重新定义一些变量,我能查到的有:
/WEB-INF/local.app.properties 里, 涉及的变量有:
cuba.webAppUrl = https://${host}:${ssl.server.port}/${app.id}/
cuba.webUrl = https://${host}:${ssl.server.port}/
cuba.webContextName = ${app.id}-core
cuba.webHostName=${host}
cuba.webPort = ${ssl.server.port}
web.xml里保证配置了/WEB-INF/local.app.properties
:
<context-param>
<param-name>appPropertiesConfig</param-name>
<param-value>classpath:cuba-web-app.properties
classpath:cn/com/xxx/xxx/web-app.properties
/WEB-INF/local.app.properties
</context-param>