EM对接
<h1>1.Ecology与EM对接问题</h1>
<h2>1.关于EM 基本配置</h2>
<p>Ecology9和 EM7对接 的 配置
修改
Ecology的 Web.xml 添加 如下 2个 过滤器 注意 顺序 一般 要 放在 前面 一点</p>
<pre><code class="language-xml"><filter>
<filter-name>EMFilter</filter-name>
<filter-class>com.cloudstore.dev.api.service.EMFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EMFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>com.cloudstore.dev.api.service.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name> SessionFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></code></pre>
<p>配置 em对接放行接口和白名单的参数
在web info 的 prop 目录 下 找到
weaver_session_filter.properties 系统 使用 安装 时 已经 默认 配置 好 的 外部配置文件配置 过
滤的路径地址。
weaver_session_filter_dev.properties (客户 自定 放行 的 接口 一般 项目 只需 要 修改 此文件 在
unchecksessionurl 中 可以 配置 客户 自定义 要 放行 的 接口 )
相关参数 作用 如下</p>
<p>1.checkurl头部验证路径 适用于 EM
2.uncheckurl 头部验证放行路径 适用于 EM
3.unchecksessionurl
session 验证放行
例如
checkurl=/api/hrm/
uncheckurl=/api/ec/dev/app/getCheckSystemInfo;/api/ec/dev/emjoin;
unchecksessionurl=/api/doc/upload/mobile/uploadFile;/api/doc/upload/mobile/uploadFile;…………</p>
<h1>2.关于EM 常见问题处理</h1>
<h2>一、ECOLOGY单机部署时</h2>
<p>先确认Ecology环境是否正常打过非标(编号:117 移动平台配置中心).
检查ecology/WEB-INF/web.xml 是否包含EMFilter 关键字(直接搜索即可).
确保Ecology服务器与EMobile服务器时间保持一致(时间差不允许超过5分钟).
在EMobile后台用户管理中确认用户正确同步,人员关系对应正常(对应OA系统中的ID一定要确认
人员是否存在、在职状态、名称一致).
使用Resin4中间件的客户请确认该文件配置是否正确( Resin/conf/resin.xml ).</p>
<pre><code class="language-xml"><!--如果文件中内没有包含该关键字相关配置且您不太了解web.xml相关配置规范,请联系`田泽法`-
->
<!--如果您了解web.xml中配置规范,可将以下内容复制配置到web.xml文件中,顺序保证在
SessionFilter的配置上面-->
<filter>
<filter-name>EMFilter</filter-name>
<filter-class>com.cloudstore.dev.api.service.EMFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EMFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--其中<reuse-session-id> 检查下是否为true,如果不是改成true.-->
<!--如果以下整段都没有,请复制后粘贴到截图中对应的位置,并重启服务生效-->
<web-app-default>
<session-config>
<session-max>16686</session-max>
<session-timeout>720</session-timeout>
<enable-cookies>true</enable-cookies>
<enable-url-rewriting>true</enable-url-rewriting>
<always-load-session>true</always-load-session>
<reuse-session-id>true</reuse-session-id>
</session-config>
<!--<cookie-http-only/>-->
</web-app-default></code></pre>
<h2>二、ECOLOGY集群部署时</h2>
<p>每个节点按照单机的检查步骤全部检查一遍是否正常.
检查集群中每个节点服务器时间是否一致(再次强调一遍,请明白这里的重要性).
检查集群中每个节点服务器ecology/WEB-INF/web.xml 是否包含WSessionClusterFilter
检查集群中每个节点服务器的ecology/WEB-INF/prop/weaver_new_session.properties 文件
是否配置正确.
状态是否开启 status=1 (1代表开启,0代表禁用,集群模式下需要开启).
实时同步是否开启enableImmediatelySync=true (true代表开启,false代表禁用,通过redis实现需要开启).</p>
<pre><code class="language-xml"><!--如果您了解web.xml中配置规范,可将以下内容复制配置到web.xml文件中,顺序保证在所有
Filter的配置上面(第一个过滤器)-->
<filter>
<filter-name>WSessionClusterFilter</filter-name>
<filter-class>weaver.session.WSessionClusterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>WSessionClusterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></code></pre>
<p>关闭自定义sessionId模式useCustomSessionId=0 (1代表开启,0代表禁用,需要禁用).
确保配置的redis相关连接信息可正常连接(不管Redis通过模式部署,在ecology/WEBINF/
web.xml 中注释掉SecurityFilter 相关配置,重启服务后访问OA地
址/checkredis.jsp 可检查redis连接是否正常。最后一定要将ecology/WEB-INF/web.xml
中注释的内容还原).</p>
<p>检查集群中每个节点服务器的ecology/WEB-INF/lib/keys 目录是否存在,且集群下是否做了文
件共享.
如以上检查都无问题,请将文档附件文件下载后替换以下js文件
ecology/spa/coms/ssoSDK/ssoInit.js</p>
<h2>三 EMobile集群部署时</h2>
<p>EMobile从节点是否和主节点连接同一个数据库.
EMobile从节点是否和主节点连接同一个缓存数据库(Redis).
EMobile多个节点之间服务器时间是否一致.</p>
<h2>四:关于常见EMobile后台检测异常结果解释与解决方式</h2>
<h3>1.EC系统中存储的移动平台地址是否正确:否</h3>
<p>一般情况下是由于客户在(EMobile后台—>系统管理—>基础设置—>系统内部地址/系统外网地
址)单独进行修改之后,没有到Ecology集成(EMobile后台—>Ecology集成)页面进行重新编
辑保存.
如果重新编辑保存一下之后检测仍不一致,确认是否存在多套Ecology环境共用Redis缓存中
间件.
有其它任何情况或问题请直接联系 @田泽法 / @温明刚 进行排查处理.</p>
<h3>2.EC系统中存储的移动平台corpid是否正确:否</h3>
<p>一般情况下是由于存在多套Ecology环境(这种情况一般Ecology是集群部署且有正式和测试环
境)共用Redis缓存中间件.
当前集成Ecology被其它EMobile环境集成过,此时只需要在(EMobile后台—>Ecology集成)页
面重新编辑保存再次检测即可.
有其它任何情况或问题请直接联系 @田泽法 / @温明刚 进行排查处理.</p>
<h3>EC系统对传入的参数rsa_encrypt解密是否正确:否</h3>
<p>Ecology单机部署时,当前版本为ecology9。请检查是否存在
ecology/classbean/weaver/rsa 目录,如果当前存在该目录,请直接将该目录重命名为
xxx.bak
Ecology集群部署时,当前版本为ecology9。请重复以上单机检查步骤,并确认
ecology/WEB-INF/lib/keys 目录是否正常集群共享.
如以上都检查完毕,请直接在当前页面重新编辑一下再次检测.
仍有任何问题请直接联系 @田泽法 进行排查处理.</p>
<h3>EC系统是否可以调用移动平台获取accesstoken:否</h3>
<p>此项代表Ecology服务器是否可以通过EMobile系统内部地址进行服务调用,出现这种情况一
般分为网络不通、内网https协议问题、Ecology服务调用api依赖jar包冲突等情况.
先确保EMobile系统内部地址ip在Ecology服务器能够ping通.
再确认EMobile系统内部地址是否使用了https协议,一般内网https会导致无法获取证书,
建议EMobile服务内网保留http通讯地址.
检查Ecology环境ecology/WEB-INF/lib 目录是否存在http 相关多个版本的jar且jar包的内
容不为空.</p>
<h1>其他EM问题</h1>
<p>em没有配置好导致问题</p>
<p>网络不通 em的服务器访问不到ecology的服务器 或者ecology的服务器访问不到em的服务器
排查方法 在服务区上curl访问相关服务地址</p>
<p>检查emfilter以及配置</p>
<p>1.ip地址问题 ip地市配置错误导致无法访问
2.ip不同的问题 ecology的ip地址配置成了em地址,或者反过来配置了
3.ip内网和外网的问题 内网无法访问外网或者外网无法访问内网等
4.ip本地地址127.0.0.1的问题 本机地址配置成了127.0.0.1但是实际是不通的
em解密错误问题</p>
<h3>1.类冲突导致解密失败</h3>
<p>看一下classebean/Weaver/rsa
如果有就备份出来
删除重启,em后台重新编辑保存</p>
<h3>2.修改后没有重新编辑保存导致的秘钥不生效问题</h3>
<p>很多客户修改配置后忘记重现到em的ecology对接里面重新编辑并保存,导致配置内容不能到ecology生效。
建议每次修改配置后到要重新编辑并保存一下em对接设置</p>
<h3>3.keys文件异常或者丢失导致的问题</h3>
<h3>4.环境问题导致的加密函数问题</h3>
<p>执行时包字符串异常问题
1.jar冲突导致 (httpclient版本问题)
2.或者是接口被拦截</p>