2015年5月22日星期五

Linux_102:常用命令之二十九:source 和 .

环境:MAC OS X 10.10.3

1. source 
语法:source FileName
在当前Shell下执行文件中的各个命令。

比如 setJdk8Env.sh内容如下:

#!/bin/sh

#Set Java Environment
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export ANT_HOME=/Users/maping/Apache/ant
export MAVEN_HOME=/Users/maping/Apache/maven
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$MAVEN_HOME/bin:$PATH

执行 source setJdk8Env.sh,才会在当前Shell中成功设置JDK8的环境变量。
如果执行 ./setJdk8Env.sh,只能够在子Shell中成功设置JDK8的环境变量,随着脚本的执行完毕,又回到了当前Shell,因此是无法看到JDK8的环境变量的。

2. .
点“.”命令和source命令作用一样。
执行 .  set Jdk8Env.sh 和执行 source setJdk8Env.sh 效果一样。

参考文献:
1. http://blog.csdn.net/nash603/article/details/6152200
2. http://blog.chinaunix.net/uid-23622436-id-3222317.html

2015年5月19日星期二

EAP_022:HQ224033: Failed to broadcast connector configs问题的解决

环境:MAC OS X 10.10.3 + JBoss EAP 6.4

在MAC下使用JBoss EAP 6.4做集群实验,启动Host Controller时,报告如下错误:

14:09:07,317 ERROR [org.hornetq.core.server] (Thread-0 (HornetQ-scheduled-threads-2144051991)) HQ224033: Failed to broadcast connector configs: java.io.IOException: Can't assign requested address
[Server:server-two]     at java.net.PlainDatagramSocketImpl.send(Native Method) [rt.jar:1.7.0_75]
[Server:server-two]     at java.net.DatagramSocket.send(DatagramSocket.java:697) [rt.jar:1.7.0_75]
[Server:server-two]     at org.hornetq.api.core.UDPBroadcastGroupConfiguration$UDPBroadcastEndpoint.broadcast(UDPBroadcastGroupConfiguration.java:136) [hornetq-core-client-2.3.25.Final-redhat-1.jar:2.3.25.Final-redhat-1]
[Server:server-two]     at org.hornetq.core.server.cluster.impl.BroadcastGroupImpl.broadcastConnectors(BroadcastGroupImpl.java:216) [hornetq-server-2.3.25.Final-redhat-1.jar:2.3.25.Final-redhat-1]
[Server:server-two]     at org.hornetq.core.server.cluster.impl.BroadcastGroupImpl.run(BroadcastGroupImpl.java:228) [hornetq-server-2.3.25.Final-redhat-1.jar:2.3.25.Final-redhat-1]
[Server:server-two]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_75]
[Server:server-two]     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [rt.jar:1.7.0_75]
[Server:server-two]     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [rt.jar:1.7.0_75]
[Server:server-two]     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [rt.jar:1.7.0_75]
[Server:server-two]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
[Server:server-two]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
[Server:server-two]     at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]

原因是在MAC OS X 下,hornetq的multicast出现了问题。
解决办法是增加一个路由:sudo route add 224.0.0.0 127.0.0.1 -netmask 240.0.0.0

参考文献:
1. http://blog.kenthua.com/2015_05_01_archive.html

2015年5月12日星期二

Linux_101:常用命令之二十八:zip unzip

环境:MAC OS X 10.10.3

1. zip
常用语法:zip -q -r -e -m -o [someThing].zip someThing

(1)-q 表示不显示压缩进度状态
(2)-r 表示子目录子文件全部压缩为zip
(3)-e 表示你的压缩文件需要加密,终端会提示你输入密码的
(4)-m 表示压缩完删除原文件
(5)-o 表示设置所有被压缩文件的最后修改时间为当前压缩时间

例子:zip -r \user\someone\someDir\someFile.zip \users\someDir

2. unzip 
unzip为.zip压缩文件的解压缩程序。

语法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密 码>][.zip文 件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

(1)-c   将 解压缩的结果显示到屏幕上,并对字符做适当的转换。
(2)-f   更 新现有的文件。
(3)-l   显 示压缩文件内所包含的文件。
(4)-p   与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任 何的转换。
(5)-t   检 查压缩文件是否正确。,但不解压。
(6)-u   与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
(7)-v   执 行是时显示详细的信息。或查看压缩文件目录,但不解压。
(8)-z   仅 显示压缩文件的备注文字。
(9)-a   对 文本文件进行必要的字符转换。
(10)-b   不 要对文本文件进行字符转换。
(11)-C   压 缩文件中的文件名称区分大小写。
(12)-j   不 处理压缩文件中原有的目录路径。
(13)-L   将 压缩文件中的全部文件名改为小写。
(14)-M   将 输出结果送到more程 序处理。
(15)-n   解 压缩时不要覆盖原有的文件。
(16)-o   不 必先询问用户,unzip执 行后覆盖原有文件。
(17)-P<密码>   使 用zip的密码选项。
(18)-q   执 行时不显示任何信息。
(19)-s   将 文件名中的空白字符转换为底线字符。
(20)-V   保 留VMS的文件版本信 息。
(21)-X   解 压缩时同时回存文件原来的UID/GID。
(22)[.zip文件]   指定.zip压缩文件。
(23)[文件]   指定 要处理.zip压缩文 件中的哪些文件。
(24)-d <目录>   指 定文件解压缩后所要存储的目录。
(25)-x <文件>   指 定不要处理.zip压 缩文件中的哪些文件。
(26)-Z   unzip -Z等 于执行zipinfo指 令。

参考文献:
1. http://www.cnblogs.com/davidxie/archive/2012/11/23/2784646.html
2. http://www.cnblogs.com/lucyjiayou/archive/2011/12/25/2301046.html

JDG_009:编写 JDG C++ Client 程序

环境:RHEL 6.5 + JBoss Data Grid Server 6.3.2

1. 下载并解压 jboss-datagrid-6.3.2-server.zip

2. 下载并解压 jboss-datagrid-6.3.2-hotrod-cpp-client-RHEL6-x86_64.zip

3.  编写SimpleMain.cpp,内容如下:

#include "infinispan/hotrod/ConfigurationBuilder.h"
#include "infinispan/hotrod/RemoteCacheManager.h"
#include "infinispan/hotrod/RemoteCache.h"
#include
using namespace std;
using namespace infinispan::hotrod;

int main(int argc, char** argv) {
    ConfigurationBuilder b;
    b.addServer().host(argc>1?argv[1]:"127.0.0.1").port(argc>2?atoi(argv[2]):11222);
    RemoteCacheManager cm(b.build(), false);
    //RemoteCache cache = cm.getCache();
    //cm.start();
    cout << "Hello world !" << endl;
   
    RemoteCache rc = cm.getCache("default",true);
    cm.start();
   
    std::cout << "Cache Name: " << rc.getName() << std::endl;

    std::string k1("key13");
    std::string v1("boron");
   
    // put
    rc.put(k1, v1);
    std::auto_ptr rv(rc.get(k1));
    std::cout << "rv: " << *rv << std::endl;

    rc.putIfAbsent(k1, v1);
    // get
    std::auto_ptr rv2(rc.get(k1));
    std::cout << "rv2: " << *rv << std::endl;

    std::map,HR_SHARED_PTR > map = rc.getBulk(0);
    std::cout << "getBulk size: " << map.size() << std::endl;
    cm.stop();
    return 0;
}


4. 启动JDG Server

5. 编译SimpleMain.cpp
g++ -o SimpleMain SimpleMain.cpp -L/home/maping/test/jboss-datagrid-6.3.2-hotrod-cpp-client-RHEL6-x86_64/lib64 -lhotrod -I/home/maping/test/jboss-datagrid-6.3.2-hotrod-cpp-client-RHEL6-x86_64/include/

6. 运行程序:./SimpleMain

参考文献:
1. http://infinispan.org/docs/hotrod-clients/cpp/

Tips_024:Firefox 版本升级到37后上不去加密网站解决方法

Firefox版本升级到37后会导致上不去加密的网站,请按照以下操作修改:

1. 打开Firefox,在地址栏输入about:config,回车。
会提示如下警告信息, 确认并继续


2. 在搜索栏输入 tls
找到 security.tls.insecure_fallback_hosts 并双击
将字符串值修改为网址,如果有多个地址,请用逗号隔。
例如:rhebs.corp.redhat.com,rsaebs.corp.redhat.com


2015年5月7日星期四

EAP_021:URL中的"/"和"\"导致400 错误

环境:JBoss EAP 6.x

测试中发现 web url 中包含 / (%2F) 或 / (%5C)会导致 400 error。
比如:
(1)https://e.m3.lab/ocfs/cashappoint/cashaptOne.do%5C?lgFlg=1&type=
(2)https://e.m3.lab/ocfs/home%2Fpage.do 

解决方法:

修改standalone.conf文件,
在 JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true” 这一行后增加以下两行:
 JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
 JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true”

完整的JAVA_OPS设置如下:
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"
   JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
   JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"

参考文献:
1. http://stackoverflow.com/questions/4069002/receive-an-http-400-error-if-2f-is-part-of-the-get-url-in-jboss
2. https://rhn.redhat.com/errata/RHSA-2007-0360.html