為了滿足將plugin工程打成jar包,但是spring的配置文件不打進jar包的需求。很多時候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時,如果沒有正確的使用spring的Resource就不能加載spring的配置文件,經(jīng)過多次嘗試終于找到一個比較合適的方法,與大家交流。

public static BeanFactory getFactory()
{

if (factory == null)
{
FileSystemResource resource = new FileSystemResource("appcontextclient.xml");
factory = new XmlBeanFactory(resource);
}
return factory;

}
將appcontextclient.xml文件放到工程根目錄下,發(fā)布時將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關(guān)的路徑來更改你的目錄(但是有可能在調(diào)試過程中必須要把appcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因為大部分時間我們的eclipse IDE是何 workspace分開存放的,這樣我們在調(diào)試的時候非常別扭,要到IDE里去修改配置文件)。
以上方法并不是唯一的,只是我感覺用起來比較合適的,這樣在調(diào)試時既可以保證appcontextclient.xml文件在工程目錄范圍內(nèi),有可以在發(fā)布時使文件保持在安裝目錄而不是運行環(huán)境的workspace的臨時目錄里。
同時介紹幾個方法可以eclipse方法獲得eclipse工具的幾個重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
Platform.getInstallLocation().getURL()
file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/
這是我的eclipse IDE的安裝目錄
Platform.getLocation()
D:/runtime-IDE.product
這是我調(diào)試插件時生成的臨時運行環(huán)境目錄,是在調(diào)試IDE工程時生成的,就是發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄
Platform.getInstanceLocation().getURL()
file:/D:/runtime-IDE.product/
這個跟上面的一樣
Platform.getLocation()
D:/runtime-IDE.product
這個跟上面的也一樣
Platform.getLogFileLocation()
D:/runtime-IDE.product/.metadata/.log
運行環(huán)境的日志文件路徑,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下的/.metadata/.log
Platform.getStateLocation(Platform.getBundle("IDE"))
D:/runtime-IDE.product/.metadata/.plugins/IDE
運行環(huán)境中IDE的一個臨時目錄,發(fā)布時插件所屬eclipse運行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
Platform.getUserLocation()
file:/C:/Documents and Settings/XX/user
這是我的文檔的路徑(把用戶名X掉,哈哈)
Platform.getBundle("IDE").getLocation()
update@D:/WorkSpace/IDE/
我的IDE工程的路徑,對應(yīng)發(fā)布時插件的jar本身,在這個目錄下的文件將全部包含在發(fā)不得jar里。
Platform.getConfigurationLocation().getURL()
file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/
eclipse IDE 自己建的目錄
eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個類里找到,具體的就請大家找找API吧
posted @
2008-01-05 21:35 小平 閱讀(2013) |
評論 (0) |
編輯 收藏
應(yīng)要求在此提供ibatis批量插入demo下載,謝謝大家的關(guān)注,不過對于一些人的不禮貌行為我非常痛心。由于工作地點不能上網(wǎng),不能上網(wǎng),不能及時回復(fù)大家的留言我深表道歉。
下載
posted @
2007-12-27 19:52 小平 閱讀(3421) |
評論 (9) |
編輯 收藏
此問題網(wǎng)上大部分解決方法是這樣的:
1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級->wins標簽->去掉啟用LMhosts查詢前的勾.
2.控制面版->windows防火墻->高級標簽->本地連接設(shè)置->服務(wù)的標簽里勾選安全Web服務(wù)器(HTTPS)即可
但是我的機器按照上面操作apache服務(wù)仍然不可以使用,于是索性將服務(wù)中的Windows Firewall/Internet Connection Sharing (ICS的服務(wù)關(guān)掉了,發(fā)現(xiàn)問題解決了,apache可以用了。對于安全問題可以選擇第3方的防火墻來解決。
注意:費爾防火墻好像和apache沖突,也會導(dǎo)致WSASocket failed to open the inherited socket
posted @
2007-10-21 14:53 小平 閱讀(1462) |
評論 (1) |
編輯 收藏
今天用sun的jdk調(diào)的沒有一點問題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報出向一個字段中插入了過長的數(shù)據(jù),可是程序在幾天前還是沒有問題的,后來分析可能是字符集導(dǎo)致的,因為前幾天修改過informix數(shù)據(jù)庫的字符集由8859-1轉(zhuǎn)為了zh_cn.gb18030-2000,但解決過程異常艱難,后來吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來猜測了一下原因:
1、oracle數(shù)據(jù)庫的jdbc驅(qū)動是是自動將數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)為unicode格式,這可能跟java的String默認為unicode有關(guān),為了讓大家方便操作,
2、sun jdk的String在初始時用的是Unicode格式,ibm的jdk應(yīng)該也是,但是有一點,sun的jdk在通過informix jdbc驅(qū)動取數(shù)據(jù)時不會將數(shù)據(jù)轉(zhuǎn)成其他字符集,而是仍然使用Unicode,而IBM的則是通過CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉(zhuǎn)為了zh_cn.gb18030-2000。
所以在oracle作insert的時候就會由于字符集不匹配而報錯
posted @
2007-07-18 19:23 小平 閱讀(998) |
評論 (2) |
編輯 收藏
前兩天遇到為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能這個問題,搜遍了國內(nèi)網(wǎng)站,也沒有個好結(jié)果,終于多天后在一個國外的svn服務(wù)器上找到了一段代碼,解決了問題
1、為TextViewer添加TextViewerUndoManager來管理記錄
protected TextViewer textViewer;
protected TextViewerUndoManager undoManager;
//20是保存記錄的數(shù)量。
undoManager = new TextViewerUndoManager(20);
//綁定對textViewer控件的數(shù)據(jù)進行管理
undoManager.connect(textViewer);
textViewer.setUndoManager(undoManager);


2、添加Ctrl+z,與Ctrl+y事件
StyledText styledText = textViewer.getTextWidget();

styledText.addKeyListener(new KeyListener( )
{
public void keyPressed( KeyEvent e )

{
if ( isUndoKeyPress( e ) )

{
textViewer.doOperation( ITextOperationTarget.UNDO );
}
else if ( isRedoKeyPress( e ) )

{
textViewer.doOperation( ITextOperationTarget.REDO );
}
}
private boolean isUndoKeyPress( KeyEvent e )

{
// CTRL + z
return ( ( e.stateMask & SWT.CONTROL ) > 0 )
&& ( ( e.keyCode == 'z' ) || ( e.keyCode == 'Z' ) );
}
private boolean isRedoKeyPress( KeyEvent e )

{
// CTRL + y
return ( ( e.stateMask & SWT.CONTROL ) > 0 )
&& ( ( e.keyCode == 'y' ) || ( e.keyCode == 'Y' ) );
}
public void keyReleased( KeyEvent e )

{
// do nothing
}
});
posted @
2007-07-16 10:49 小平 閱讀(1870) |
評論 (3) |
編輯 收藏