發表文章

目前顯示的是有「Java」標籤的文章

Ant的SCP問題

下面是一段ANT,目的是針對一堆server做程式的佈署工作 一般我們習慣用build.properties作為參數設定檔 而也可以動態的用 -D KEY = VALUE 作為臨時的參數輸入... 而實際上的執行檔案是build.xml... #build.properties SERVER_LIST=11.11.11.11,11.11.11.12,11.11.11.13 USER=xxxx PASSWD=oooo TMP_FOLDER=/tmp #build.xml <target name="Deploy">     <antcall target="Wrapper code" />     <!-- 檢查是否有手動輸入-DSERVER=xx.xxx.xxx.xxx -->     <condition property="SERVER.set" else="false">       <isset property="SERVER"/>     </condition>     <echo>Is specify server? ${SERVER.set}</echo>     <!-- 如指定-DSERVER=xx.xxx.xxx.xxx時候,忽略設定檔案,直接進行deploy -->     <ac:if>       <equals arg1="${SERVER.set}" arg2="true"/>       <then>         <ac:var name="SERVER_LIST" value="${SERVER}...

Java RESTful web service

Java實作RESTful的好幫手: http://iambigd.blogspot.tw/2011/04/java-java-restful-service.html 官網: http://jersey.java.net/

Ant deploy war file to Tomcat server

雖然離開Java有段時間了 不過還是難忘Java在一些地方的好處 這邊簡介如何透過ANT來作Tomcat的部署 Tomcat主機資訊如下: Tomcat version: 6.0.32 Server IP: xxx.xxx.xxx.xxx Tomcat Port: 8080 Script Deployer: tomcat (password: tomcatpassword) 特殊設定: 1. ant需要把catalina-ant.jar放到ant家目錄的lib中 2. tomcat-user.xml(位於$TOMCAT_HOME/conf下)需要加入manager-script的角色 下面是deploy的ant script 裡面有hard code部署時候需要的 1. application name: /TestWeb2 2. server deploy endpoint: http://xxx.xxx.xxx.xxx:8080/manager 3. deployer username, password: tomcat / tomcatpassword 當然,這些變數也可以透過-Dkeyname=keyvalue的方式在執行時候帶入 build.xml <project name="My Application" default="compile" basedir=".">   <!-- Configure the context path for this application -->   <property name="path"     value="/ TestWeb2 "/>   <!-- Configure properties to access the Manager application -->   <property name="url"      value=" http://xxx.xxx.xxx.xxx:8080/manager "/>   ...

Ant example - for loop

此範例展示使用ant做for迴圈,使用到contrib函式庫... 事前工作: 1. 下載antcontrib jar:  http://sourceforge.net/projects/ant-contrib/files/ant-contrib/ (筆者用的是1.0b3) 2. 解壓後,將antcontrib jar檔放置到ant目錄下的lib目錄裡 3. 參數檔: #build.properties SERVER_LIST=1.1.1.1,2.2.2.2,3.3.3.3 說明: 1. ant的for迴圈裡面取用迴圈參數是用@來取值,ex: @{letter}, 為了避免跟一些使用@的參數參雜產生錯誤,這邊另外指派給str這個變數 2. 另外,這邊使用contrib下的var方式來宣告變數,原因是因為 <property name="str" value="@{letter}"/>方式宣告的變數只會在第一次呼叫時候初始化一次,該值不會再被替換 程式碼: #build.xml <project name="example" basedir="." default="build"   xmlns:ac="antlib:net.sf.antcontrib" >   <property file="build.properties" />   <target name="build">                                                                         ...

Web Service + Base Authentication + Un-Certificated SSL

如果一般建立Web Service Client,訪間常看到的Generator都可以幫上忙 但是如果連線的目的地有Base Authentication跟未經第三方機關認證的SSL時候...頭就通了@@ PS: 先誇獎一下...Apache CXF真是個好東西,要找時間好好研究一下! 在新版的Eclipse Web Tool版中找到了CXF的Client Generator,套用Generator後出來了一個簡單的測試JSP液面 如題,一直卡在認證根SSL的地方.... 幾經波折之後,在網海中找到了解答... 1. 畢竟是連線時候遇到的問題,直覺想到是需要在最終連線的Stub物件上呼叫道Call物件的地方加上properties設定: _call.setProperty(org.apache.axis.client.Call. USERNAME_PROPERTY , "your login name" ); //使用者名稱 _call.setProperty(org.apache.axis.client.Call. PASSWORD_PROPERTY , "your login password" ); //密碼 2.同樣是連線問題,為了要跳過SSL警告,在同各地方加了一段忽略提示: _call.setProperty( "axis.socketSecureFactory" , "org.apache.axis.components.net.SunFakeTrustSocketFactory" ); //讓asix強制接受SSL呼叫 主要參考的網站如下: http://www.nsftools.com/stubby/ApacheAxisClientTips.htm http://www.coderanch.com/t/221499/Web-Services/java/SSL-AXIS-Web-Service 下面這些也不錯,可以看看: http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport(i...

Xexex's Java 和其他二三事 : weblog

Closure 原意 - 將自由變數代入 (binding) 其他值 http://www.javaworld.com.tw/roller/ingramchen/entry/2007_1_1_WhyAddClosureInJava7

Hibernate c3p0 pool

在Hibernate中使用Connection Pool來增強與資料庫連線的穩定度... <!-- configuration pool via c3p0 --> < property name = "connection.provider_class" > org.hibernate.connection.C3P0ConnectionProvider </ property > < property name = "c3p0.min_size" > 0 </ property > < property name = "c3p0.max_size" > 30 </ property > < property name = "c3p0.timeout" > 600 </ property > < property name = "c3p0.max_statements" > 0 </ property > < property name = "c3p0.acquire_increment" > 1 </ property > < property name = "c3p0.idle_test_period" > 60 </ property >

Regular Expression

public class RegularExpression { /** * Using in regular expression to find the html start tags and close tags */ public static final String RE_HTML_TAG = "<{1}[^>]{1,}>{1}"; public static void main(String args[]){ String html = "<html pref='xxx'>TEST</html>"; String result = html.replaceAll(RegularExpression.RE_HTML_TAG, ""); System.out.println(result); } }

JVM GC Information

JAVA_OPTIONS=" -Xincgc -verbose:gc -XX:+PrintGCDetails" Xincgc : 漸進式GC,可以增加GC的效能 verbose:gc, XX:+PrintGCDetails : 顯示GC資訊 http://java.sun.com/docs/hotspot/gc1.4.2/example.html

Check Java Binary Version

檢視Java Binary File編譯版本 方法一: >javap -verbose Employee Compiled from "Employee.java" public class test.Employee extends java.lang.Object   SourceFile: "Employee.java"   minor version: 0    major version: 50   Constant pool: ..... 方法二: 使用文字工具開啟class檔案,檢視前面的binary code javac -target 1.1  ==>  CA FE BA BE 00 03 00 2D javac -target 1.2  ==>  CA FE BA BE 00 00 00 2E javac -target 1.3  ==>  CA FE BA BE 00 00 00 2F javac -target 1.4  ==>  CA FE BA BE 00 00 00 30 看起來新版本就往下推最後一碼了... :P

Encrypt / Decrypt weblogic password

網路上找到好用的程式: /*  *Source URL:  http://gustlik.wordpress.com/2008/08/06/decryption-of-configuration-passwords-in-weblogic/    */ import java.util.*; import java.io.*; import javax.xml.parsers.*; import javax.xml.xpath.*; import org.w3c.dom.*; import weblogic.security.internal.*; // requires weblogic.jar in the class path import weblogic.security.internal.encryption.*; public class WebLogicDecryptor { private static final String PREFIX = "{3DES}"; private static final String XPATH_EXPRESSION = "//node()[starts-with(text(), '" + PREFIX + "')] | //@*[starts-with(., '" + PREFIX + "')]"; private static ClearOrEncryptedService ces; public static void main(String[] args) throws Exception { if (args.length < 2) { throw new Exception("Usage: [domainDir] [configFile]"); } ces = new ClearOrEncryptedService(SerializedSystemIni.getEncryptionService(new File(args[0]).getAbsolutePath())); File file = new File...

Using weblogic environment to generate encrypt password

There has a simple way to using weblogic environment to generate encrypt password... 1. Set environment... ./setDomainEnv.sh 2. Generate password... java weblogic.security.Encrypt [YOUR PASSWORD]

備份script

這是一個小shell script,可以讓你把某各位置上的檔案壓縮起來,並依照日期給定檔名postfix 我把他用來做我server端部署程式時,備份舊程式用 :D #!/bin/bash export SERVER_FOLDER=PTWESAPP01 export BK_FOLDER=/data/backup export BK_TARGET=/home/weblogic/ export BK_TMP_DEST=$BK_FOLDER/$SERVER_FOLDER/tmp/weblogic export BK_DEST=$BK_FOLDER/$SERVER_FOLDER/archive/weblogic-`date +"%Y%m%d"`.tgz rsync -av $BK_TARGET $BK_TMP_DEST cd $BK_FOLDER/$SERVER_FOLDER/tmp tar --exclude *.log --incremental -czf $BK_DEST weblogic/ cd -

Hibernate Find By Example

當TB_FD_USER裡面的PK=USER_NO時候 只有放PK到findByExample會被忽略喔... eStoreService dao = (eStoreService)SpringService.getService(SpringService.USE_JDBC, "eStoreService"); TbFdUser user = new TbFdUser(); user.setUserNo(new Long(1)); Collection c = dao.getUserByExample(user); System.out.println("result size:"+c.size()); Result... Hibernate: select this_.USER_NO as USER1_4_0_, this_.ADDRESS as ADDRESS4_0_, this_.AREA_CODE as AREA3_4_0_, this_.BANK_ACCOUNT as BANK4_4_0_, this_.BIRTHDAY as BIRTHDAY4_0_, this_.CITY as CITY4_0_, this_.COMPANY_NAME as COMPANY7_4_0_, this_.COUNTRY_CODE as COUNTRY8_4_0_, this_.CREATE_BY as CREATE9_4_0_, this_.CREATE_DATE as CREATE10_4_0_, this_.EMAIL as EMAIL4_0_, this_.FAX_NO as FAX12_4_0_, this_.FLAG as FLAG4_0_, this_.ID_NO as ID14_4_0_, this_.INTRODUCED_BY as INTRODUCED15_4_0_, this_.LOGIN_ID as LOGIN16_4_0_, this_.LOGIN_PWD as LOGIN17_4_0_, this_.MOBILE_NO as MOBILE18_4_0_, this_.PROVINCE_CODE as PROVINCE19_4_0_, this_.SEX as SEX4_0_, this_.STAT...

Spring configure for JDBC or Connection Pool

Spring using JDBC configuration Spring的DB存取可以設定使用proxool pool或是jdbc driver manager的方式 DAO的設定部分都不用錯修改喔~~ 下面是driver manager跟proxool的設定部分(需擇一,因為定義的bean id是一樣的啦,而且同一個專案,用一個就夠啦...) [applicationContext.xml]     <!-- Using JDBC Connection (select one with "Using proxool connection pool") -->     <bean id="projectDataSource"         class="org.springframework.jdbc.datasource.DriverManagerDataSource">         <property name="driverClassName">             <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>         </property>         <property name="url">             <value>                 jdbc:microsoft:sqlserver://server_ip:1433;...