要说迁移部署,其实之前也是运行在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;
}
Tags: jboss, nginx, redis, session