要说迁移部署,其实之前也是运行在jboss下的,不过运行的模式不同 原来只使用了jboss的tomcat 这次使用普通的jboss standalone 的运行模式。
1. 解压模式下运行项目
jboss 默认是使用war包部署运行的,带来的一个问题就是无法增量更新、无法上传图片文件 ;
1. 修改 standalone.xml 添加 auto-deploy-exploded=true
2. 修改需要解压运行的war文件的解压后的文件夹的名称为 project.war , 然后 touch project.war.dodeploy ,重启 standalone.sh
2. nginx文件夹别名
经过上述调整的解压后的文件夹为 project.war , 对应的请求网址为 域名/project ,如果想使用nginx处理图片等静态文件,因为 project.war 不是 project 文件夹,所以没办法请求到文件;
1. 增加一个 软链接 project 到 project.war
3. session id sessionid 中存在空格的问题
这个版本的jboss的使用 65 个字符串来生成sessionid (SESSION_ID_ALPHABET has to be 65 characters in length) ,其实有 加号 + 减号 – 下划线 _ , 而 加号 + 在url中作为参数传递中会被错误的转化成 空格 ,项目使用sessionid作为key来存储客户信息, redis 不支持key中存在空格(redis自身使用空格 space 作为分隔符 所以不支持允许key中有空格),所以只好去除特殊符号 修改为只使用大小写数字的组合 。
原本默认的为: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_
调整修改为:
<property name=”-Dorg.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET” value=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678901″/>
完整的配置文件参考 standalone.xml :
<?xml version=‘1.0‘ encoding=‘UTF-8‘?> <server xmlns=“urn:jboss:domain:1.3“> <extensions> <extension module=“org.jboss.as.clustering.infinispan“/> <extension module=“org.jboss.as.configadmin“/> <extension module=“org.jboss.as.connector“/> <extension module=“org.jboss.as.deployment-scanner“/> <extension module=“org.jboss.as.ee“/> <extension module=“org.jboss.as.ejb3“/> <extension module=“org.jboss.as.jaxrs“/> <extension module=“org.jboss.as.jdr“/> <extension module=“org.jboss.as.jmx“/> <extension module=“org.jboss.as.jpa“/> <extension module=“org.jboss.as.logging“/> <extension module=“org.jboss.as.mail“/> <extension module=“org.jboss.as.naming“/> <extension module=“org.jboss.as.osgi“/> <extension module=“org.jboss.as.pojo“/> <extension module=“org.jboss.as.remoting“/> <extension module=“org.jboss.as.sar“/> <extension module=“org.jboss.as.security“/> <extension module=“org.jboss.as.threads“/> <extension module=“org.jboss.as.transactions“/> <extension module=“org.jboss.as.web“/> <extension module=“org.jboss.as.webservices“/> <extension module=“org.jboss.as.weld“/> </extensions> <system-properties> <property name=“org.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET“ value=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_“/> </system-properties>
4. 修改redis支持写入key时存在空格
如果不修改上述的sessionid的生成机制,那就需要修改redis的写入读取机制,把空格转化为其他符号。
public static String SpaceReplace(String strOld){ String[] split = strOld.split(" "); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < split.length-1; i++) { stringBuilder.append(split[i]).append("%20"); } stringBuilder.append(split[split.length-1]); String strNew = stringBuilder.toString(); return strNew; }
发表评论