摘要: 最近深入的學習了一下
Spring,
感受到了
AOP
的威力,以前看過
BEA
的
DEV2DEV
雜志,有一期專門的
AOP
,里面很詳細講的,看了有一年多了,今天真正來作個例子
?
這個例子也是從
...
閱讀全文
posted @
2006-05-18 18:04 小小程序程序員混口飯吃 閱讀(399) |
評論 (0) |
編輯 收藏
??? <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
??????
? abstract="true">
?????? <property name="transactionManager" ref="transactionManager"/>
?????? <property name="transactionAttributes">
?????????? <props>
????????????? <prop key="insert*">PROPAGATION_REQUIRED</prop>
????????????? <prop key="update*">PROPAGATION_REQUIRED</prop>
????????????? <prop key="delete*">PROPAGATION_REQUIRED</prop>
????????????? <prop key="change*">PROPAGATION_REQUIRED</prop>
????????????? <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
???
?????? </props>
?????? </property>
??? </bean>
1
:
一旦你決定要用
AOP
來做
SERVICE
內部每個方法的事務處理,那么在
DAO
層內部最好不要從自己去
catch
異常,因為在
SERVICE
里面可能多次調用
DAO
,一旦多次調用,你其中一個方法捕獲了異常就沒有辦法保證事務回滾,所以即使你捕獲異常為了調試,一定要在
CATCH
方法中一定還要拋出一個異常來,否則無法保證事務
?
2
:
一旦決定要用
spring aop
方式來處理事務,一定要不采用
JDOtemplate
,或者
HIBERNATE TEMPALATE
內部類的方式,因為那樣他們自己去管理事務,一旦在內部類中事務回滾,無法保證其他的
DAO
中事務回滾
?
3
:
1、?
PROPAGATION_REQUIRED --
支持當前的事務,如果不存在就創建一個新的。這是最常用的選擇。
2
、
PROPAGATION_SUPPORTS --
支持當前的事務,如果不存在就不使用事務。
3
、
PROPAGATION_MANDATORY --
支持當前的事務,如果不存在就拋出異常。
4
、
PROPAGATION_REQUIRES_NEW --
創建一個新的事務,并暫停當前的事務(如果存在)。
5
、
PROPAGATION_NOT_SUPPORTED --
不使用事務,并暫停當前的事務(如果存在)。
6
、
PROPAGATION_NEVER --
不使用事務,如果當前存在事務就拋出異常。
7
、
PROPAGATION_NESTED --
如果當前存在事務就作為嵌入事務執行,否則與
PROPAGATION_REQUIRED
類似。
?
?
4
:
<
prop key="change*">PROPAGATION_REQUIRED</prop>
?
你可以在
PROPAGATION_REQUIRE
之后指定拋出什么樣的異常事務才回滾,或者事務的隔離方式是什么等等都可以配置如
<prop key="change*">PROPAGATION_REQUIRED,readOnly,-PetClinicException</prop>
posted @
2006-05-17 17:37 小小程序程序員混口飯吃 閱讀(1284) |
評論 (0) |
編輯 收藏
1
:
oracle
不支持
read uncomitted
方式
2
:
read-only
不是sql92標準,readonly的好處是提高了數據庫的效率,readonly的同時又允許DML操作,我原來以為readonly就不允許DML操作數據庫了呢
3
:read committed 和serializable的一些區別與聯系
?
?1
:都看不到臟數據
?2
:read committed 不能夠重復讀,而serializable能夠重復讀,(重復讀的意思就是,在一個事務中多次讀取一條被被的事務提高的數據(COMMITE)serializable看不到?。。?span lang="EN-US">
?3
:隔離程度越高,數據庫的并發性越差;隔離程度越低,數據庫的并發性越好。也就是說你要的數據準確一致性好,就要犧牲一些數據的效率胃代價的
?4
:
?
如果有在serializable事務開始時未提交的事務在serializable事務結束之前修改了serializable事務將要修改的行并進行了提交,則serializable事務提交的時候回法場發生無法序列化訪問的錯誤
posted @
2006-05-16 15:37 小小程序程序員混口飯吃 閱讀(586) |
評論 (0) |
編輯 收藏
經過嘗試,發現可以利用 Office 2003 中的 Microsoft Office Document Imaging 組件來實現PDF轉WORD文檔,也就是說利用WORD來完成該任務。方法如下:
用Adobe Reader 打開想轉換的PDF文件 ,接下來 選擇 “文件→打印”菜單,在打開的“打印”窗口中將 “打印機”欄中的名稱設置為 “Microsoft Office Document Image Writer”,確認后將該PDF文 件輸出為 MDI格式的虛擬打印文件 。
注: 如果沒有找到“Microsoft Office Document Image Writer”項,使用Office 2003安裝光盤中的“添加/刪除組件”更新安裝該組件,選中“Office 工具 Microsoft DRAW轉換器”。
然后, 運行 “Microsoft Office Document Imaging”,并利用它來 打開 剛才保存的MDI文件,選擇“工具→ 將文本發送到Word ”菜單,在彈出的窗口中選中“ 在輸出時保持圖片版式不變 ”,確認后系統會提示“必須在執行此操作前重新運行 OCR 。這可能需要一些時間”,不管它, 確認 即可。
注: 對PDF轉DOC的識別率不是特別完美,轉換后會丟失原來的排版格式,所以轉換后還需要手工對其進行排版和校對工作。
以上僅在 word2003 中可用,其他版本沒有Microsoft Office Document Image Writer。
posted @
2006-05-10 11:25 小小程序程序員混口飯吃 閱讀(384) |
評論 (0) |
編輯 收藏
1.1
準備工作
一。
Tomcat
已正確配置與使用。
二。軟件下載:
log4j------http://www.apache.org/dist/jakarta/log4j/jakarta-log4j-1.2.8.zip
1.2. Log4j
簡介
在強調可重用組件開發的今天,除了自己從頭到尾開發一個可重用的日志操作類外,
Apache
為我們提供了一個強有力的日志操作包
-Log4j
。
Log4j
是
Apache
的一個開放源代碼項目,通過使用
Log4j
,我們可以控制日志信息輸送的目的地是控制臺、文件、
GUI
組件、甚至是套接口服務器、
NT
的事件記錄器、
UNIX Syslog
守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。
此外,通過
Log4j
其他語言接口,您可以在
C
、
C++
、
.Net
、
PL/SQL
程序中使用
Log4j
,其語法和用法與在
Java
程序中一樣,使得多語言分布式系統得到一個統一一致的日志組件模塊。而且,通過使用各種第三方擴展,您可以很方便地將
Log4j
集成到
J2EE
、
JINI
甚至是
SNMP
應用中。本文介紹的
Log4j
版本是
1.2.8
,怎樣通過一個配置文件來靈活地進行配置,主要的應用平臺是
Tomcat4.
1.3
。
Log4j
的配置。
首先到
jakarta
下載一個
log4j
的組件。把
jakarta-log4j-1.2.8\dist\lib
下的
log4j-1.2.8.jar
文件
copy
到
classpath
指定的目錄下!可以是
Tomcat
的
common\lib
目錄下,也可以是你需要用到
log4j
的
application
下的
lib
目錄。
1.4
在
Application
目錄下的
web.xml
文件加入以后代碼
log4j
com.apache.jakarta.log4j.Log4jInit
log4j
/WEB-INF/log4j.properties
1
這段代碼的意思是說,在
Tomcat
啟動時加載
com.apache.jakarta.log4j.Log4jInit
這個名叫
Log4jInit.class
這個類文件。其中
Log4jInit.class
的源代碼如下
package com.apache.jakarta.log4j;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Log4jInit extends HttpServlet {
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
// if the log4j-init-file is not set, then no point in trying
System.out.println("................log4j start");
if(file != null) {
PropertyConfigurator.configure(prefix+file);
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res) {
}
}
這段代碼很簡單,可以看出,在加載的過程中,程序會讀取
/WEB-INF/log4j.properties
這個文件
這個文件就是本文的重點,也就是
log4j
的配置文件。
# Set root logger level to DEBUG and its only appender to A1
#log4j
中有五級
logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7
#
配置根
Logger
,其語法為:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#
這一句設置以為著所有的
log
都輸出
#
如果為
log4j.rootLogger=WARN,
則意味著只有
WARN,ERROR,FATAL
#
被輸出,
DEBUG,INFO
將被屏蔽掉
.
# A1 is set to be a ConsoleAppender.
#log4j
中
Appender
有幾層如控制臺、文件、
GUI
組件、甚至是套接口服務器、
NT
的事件記錄器、
UNIX Syslog
守護進程等
#ConsoleAppender
輸出到控制臺
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1
使用的輸出布局,其中
log4j
提供
4
種布局
. org.apache.log4j.HTMLLayout
(以
HTML
表格形式布局)
#org.apache.log4j.PatternLayout
(可以靈活地指定布局模式),
#org.apache.log4j.SimpleLayout
(包含日志信息的級別和信息字符串),
#org.apache.log4j.TTCCLayout
(包含日志產生的時間、線程、類別等等信息)
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#
靈活定義輸出格式
具體查看
log4j javadoc org.apache.log4j.PatternLayout
#d
時間
....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#R
輸出到文件
RollingFileAppender
的擴展,可以提供一種日志的備份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#
日志文件的名稱
log4j.appender.R.File=log4j.log
#
日志文件的大小
log4j.appender.R.MaxFileSize=100KB
#
保存一個備份文件
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
配置以這里就差不多了,如果你想更深入了解配置文件的各個細節,可以去查看
docs
。還有,在文章的最后面我們提供配置文件中一些主要的語法。下面我們來看看怎樣在程序中使用
log4j.
1.4
Log4j
的使用。
使用
Log4j
,第一步就是獲取日志記錄器,這個記錄器將負責控制日志信息。其語法為:
public static Logger getLogger( String name)
,
必須在使用前要把這個類導入
import org.apache.log4j.Logger;
name
一般是類文件的名字,如下:
static Logger logger = Logger.getLogger ("".class.getName () ) ;
您就可以輕松地使用不同優先級別的日志記錄語句插入到您想記錄日志的任何地方,其語法如下:
logger.debug ( Object message ) ;
logger.info ( Object message ) ;
logger.warn ( Object message ) ;
logger.error ( Object message ) ;
為什么這里要分級別的呢?試想一下,我們在寫程序的時候,為了調試程序,會在很多會出錯的地方加入大量的
logger.info();
信息。當然程序調試完畢,我們不需要這些輸出信息了,那怎么辦呢?以前的做法是把每個程序中的
logger.info
刪除,但這是不現實的,如果程序不大還可以,但如果程序很多,做這些事情就很煩人了。但因為
log4j
分級別了,當我們不需要輸出這樣調試時用到的
log.info()
時,我們可以把輸出的級別調高,如調到
warn,
或
error
級別,這樣
info
級別及以下的級別就不會出輸出了,是不是很方便的呢?
其實除了這種使用方式,
log4j
還有其它的使用方面,不需要配置文件,直接在程序中定義輸入出級別,層次等信息,如果要了解這方法的使用,可以參考文檔。
1.5
。附注:
以下是配置文件的一些重要的語法
定義配置文件
其實您也可以完全不使用配置文件,而是在代碼中配置
Log4j
環境。但是,使用配置文件將使您的應用程序更加靈活。
Log4j
支持兩種配置文件格式,一種是
XML
格式的文件,一種是
Java
特性文件(鍵
=
值)。下面我們介紹使用
Java
特性文件做為配置文件的方法:
配置根
Logger
,其語法為:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,
level
是日志記錄的優先級,分為
OFF
、
FATAL
、
ERROR
、
WARN
、
INFO
、
DEBUG
、
ALL
或者您定義的級別。
Log4j
建議只使用四個級別,優先級從高到低分別是
ERROR
、
WARN
、
INFO
、
DEBUG
。通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。比如在這里定義了
INFO
級別,則應用程序中所有
DEBUG
級別的日志信息將不被打印出來。
appenderName
就是指定日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。
配置日志信息輸出目的地
Appender
,其語法為
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
其中,
Log4j
提供的
appender
有以下幾種:
org.apache.log4j.ConsoleAppender
(控制臺),
org.apache.log4j.FileAppender
(文件),
org.apache.log4j.DailyRollingFileAppender
(每天產生一個日志文件),
org.apache.log4j.RollingFileAppender
(文件大小到達指定尺寸的時候產生一個新的文件),
org.apache.log4j.WriterAppender
(將日志信息以流格式發送到任意指定的地方)
配置日志信息的格式(布局),其語法為:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN
其中,
Log4j
提供的
layout
有以下幾種:
org.apache.log4j.HTMLLayout
(以
HTML
表格形式布局),
org.apache.log4j.PatternLayout
(可以靈活地指定布局模式),
org.apache.log4j.SimpleLayout
(包含日志信息的級別和信息字符串),
org.apache.log4j.TTCCLayout
(包含日志產生的時間、線程、類別等等信息)
posted @
2006-05-09 16:06 小小程序程序員混口飯吃 閱讀(2147) |
評論 (0) |
編輯 收藏
在nativeascii的時候一定要指定encoding:否則在windows下和linux下build的時候會出現問題,如果你在WINDOWS下測試,windows默認的是GBK,
而LINUX默認的卻不是GBK,BUILD就會出問題,所以必須指定其encoding
posted @
2006-05-09 16:00 小小程序程序員混口飯吃 閱讀(530) |
評論 (1) |
編輯 收藏
weblogic突然down掉了.大家幫忙看看原因
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x7C9
4AE22
Function=RtlImpersonateSelf+0x3A5
Library=C:\WINDOWS\system32\ntdll.dll
?
Current Java thread:
?
??????at java.util.zip.ZipFile.getEntry(Native Method)
??????? at java.util.zip.ZipFile.getEntry(ZipFile.java:146)
??????? - locked <0x11b16650> (a weblogic.utils.classloaders.ClasspathClassFinde
r$ZipFileWrapper)
??????? at weblogic.servlet.internal.WarClassFinder.getSource(WarClassFinder.jav
a:236)
??????? at weblogic.servlet.internal.WebAppServletContext.getSource(WebAppServle
tContext.java:4584)
??????? at weblogic.servlet.internal.WebAppServletContext.findIndexFile(WebAppSe
rvletContext.java:4475)
???
????at weblogic.servlet.internal.WebAppServletContext.getIndexServletStub(We
bAppServletContext.java:4225)
??????? at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2639)
??????? at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
??????? at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
?
Dynamic libraries:
0x00400000 - 0x0040B000???????? C:\bea\JDK142~1\bin\java.exe
0x7C920000 - 0x7C9B4000???????? C:\WINDOWS\system32\ntdll.dll
0x7C800000 - 0x7C91C000? ???????C:\WINDOWS\system32\kernel32.dll
0x77DA0000 - 0x77E49000???????? C:\WINDOWS\system32\ADVAPI32.dll
0x77E50000 - 0x77EE1000???????? C:\WINDOWS\system32\RPCRT4.dll
0x77BE0000 - 0x77C38000???????? C:\WINDOWS\system32\MSVCRT.dll
0x08000000 - 0x08139000? ???????C:\bea\JDK142~1\jre\bin\client\jvm.dll
0x77D10000 - 0x77D9F000???????? C:\WINDOWS\system32\USER32.dll
0x77EF0000 - 0x77F36000???????? C:\WINDOWS\system32\GDI32.dll
0x76B10000 - 0x76B3A000???????? C:\WINDOWS\system32\WINMM.dll
0x76300000 - 0x7631D000???????? C:\WINDOWS\system32\IMM32.DLL
0x62C20000 - 0x62C29000???????? C:\WINDOWS\system32\LPK.DLL
0x73FA0000 - 0x7400B000???????? C:\WINDOWS\system32\USP10.dll
0x10000000 - 0x10007000???????? C:\bea\JDK142~1\jre\bin\hpi.dll
0x008A0000 - 0x008AE000??????? ?C:\bea\JDK142~1\jre\bin\verify.dll
0x008B0000 - 0x008C9000???????? C:\bea\JDK142~1\jre\bin\java.dll
0x008D0000 - 0x008DD000???????? C:\bea\JDK142~1\jre\bin\zip.dll
0x02C80000 - 0x02C9C000???????? C:\bea\JDK142~1\jre\bin\jdwp.dll
0x06CA0000 - 0x06CA5000?? ??????C:\bea\JDK142~1\jre\bin\dt_socket.dll
0x71A20000 - 0x71A37000???????? C:\WINDOWS\system32\ws2_32.dll
0x71A10000 - 0x71A18000???????? C:\WINDOWS\system32\WS2HELP.dll
0x719C0000 - 0x719FE000???????? C:\WINDOWS\system32\mswsock.dll
0x60FD0000 - 0x61025000???????? C:\WINDOWS\system32\hnetcfg.dll
0x71A00000 - 0x71A08000???????? C:\WINDOWS\System32\wshtcpip.dll
0x07090000 - 0x0709F000???????? C:\bea\jdk142_05\jre\bin\net.dll
0x76EF0000 - 0x76F17000???????? C:\WINDOWS\system32\DNSAPI.dll
0x76F80000 - 0x76F88000???????? C:\WINDOWS\System32\winrnr.dll
0x76F30000 - 0x76F5C000???????? C:\WINDOWS\system32\WLDAP32.dll
0x76F90000 - 0x76F96000???????? C:\WINDOWS\system32\rasadhlp.dll
0x071B0000 - 0x071B8000???????? C:\bea\jdk142_05\jre\bin\nio.dll
0x07CD0000 - 0x07CD6000???????? C:\bea\jdk142_05\jre\bin\ioser12.dll
0x07DE0000 - 0x07DE5000???????? C:\bea\weblogic81\server\bin\stackdump.dll
0x07E30000 - 0x07E35000???????? C:\bea\weblogic81\server\bin\wlntio.dll
0x76C60000 - 0x76C88000???????? C:\WINDOWS\system32\imagehlp.dll
0x68D60000 - 0x68E01000???????? C:\WINDOWS\system32\DBGHELP.dll
0x77BD0000 - 0x77BD8000???????? C:\WINDOWS\system32\VERSION.dll
0x76BC0000 - 0x76BCB000???????? C:\WINDOWS\system32\PSAPI.DLL
?
Heap at VM Abort:
Heap
?def new generation?? total 2304K, used 1362K [0x10010000, 0x10290000, 0x10f7000
0)
?
eden
space 2048K,? 59% used [0x10010000, 0x101407b8, 0x10210000)
? from space 256K,? 56% used [0x10250000, 0x10274400, 0x10290000)
? to?? space 256K,?? 0% used [0x10210000, 0x10210000, 0x10250000)
?tenured generation?? total 30272K, used 29848K [0x10f70000, 0x12d00000, 0x1c810
000)
?? the space 30272K,? 98% used [0x10f70000, 0x12c961f0, 0x12c96200, 0x12d00000)
?compacting perm gen? total 27904K, used 27876K [0x1c810000, 0x1e350000, 0x24810
000)
?? the space 27904K,? 99% used [0x1c810000, 0x1e3493b0, 0x1e349400, 0x1e350000)
?
Local Time = Tue Apr 25 13:46:19 2006
Elapsed Time = 327
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2_05-b04 mixed mode)
#
# An error report file has been saved as hs_err_pid2616.log.
# Please refer to the file for further information.
#
posted @
2006-04-26 09:08 小小程序程序員混口飯吃 閱讀(934) |
評論 (0) |
編輯 收藏
tomcat去調用weblogic上的EJB服務,拋出的異常,好像是tomcat 與weblogic之間的認證造成的,
ejb的調用是成功的,拋出的異常并沒有影響到程序的執行,請大家幫忙看看什么問題,mbean的問題,是不是tomcat的某些組件的配置問題?
006-4-19 14:55:38 org.apache.commons.modeler.Registry registerComponent
嚴重
: Error registering Catalina:type=RequestProcessor,worker=http-8080,name=Htt
Request3
ava.security.AccessControlException: Access denied (mx4j.server.MBeanTrustPermi
sion register): MBean class org.apache.commons.modeler.BaseModelMBean is not tr
sted for registration
?????? at mx4j.server.interceptor.SecurityMBeanServerInterceptor.checkTrustRegi
tration(SecurityMBeanServerInterceptor.java:156)
?????? at mx4j.server.interceptor.SecurityMBeanServerInterceptor.registration(S
curityMBeanServerInterceptor.java:116)
?????? at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(De
aultMBeanServerInterceptor.java:113)
?????? at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(De
aultMBeanServerInterceptor.java:113)
?????? at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.regi
tration(ContextClassLoaderMBeanServerInterceptor.java:108)
?????? at mx4j.server.MBeanServerImpl.registerImpl(MBeanServerImpl.java:1051)
?????? at mx4j.server.MBeanServerImpl.registerMBeanImpl(MBeanServerImpl.java:10
2)
?????? at mx4j.server.MBeanServerImpl.registerMBean(MBeanServerImpl.java:978)
?????? at org.apache.commons.modeler.Registry.registerComponent(Registry.java:8
1)
?????? at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.init(
ttp11Protocol.java:670)
?????? at org.apache.tomcat.util.net.TcpWorkerThread.getInitData(PoolTcpEndpoin
.java:527)
?????? at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ol.java:672)
?????? at java.lang.Thread.run(Thread.java:534)
006-4-19 14:55:38 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandl
r init
警告
: Error registering request
006-4-19 14:55:47 org.apache.commons.modeler.Registry registerComponent
嚴重
: Error registering Catalina:type=RequestProcessor,worker=http-8080,name=Htt
Request4
ava.security.AccessControlException: Access denied (mx4j.server.MBeanTrustPermi
sion register): MBean class org.apache.commons.modeler.BaseModelMBean is not tr
sted for registration
?????? at mx4j.server.interceptor.SecurityMBeanServerInterceptor.checkTrustRegi
tration(SecurityMBeanServerInterceptor.java:156)
?????? at mx4j.server.interceptor.SecurityMBeanServerInterceptor.registration(S
curityMBeanServerInterceptor.java:116)
?????? at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(De
aultMBeanServerInterceptor.java:113)
?????? at mx4j.server.interceptor.DefaultMBeanServerInterceptor.registration(De
aultMBeanServerInterceptor.java:113)
?????? at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.regi
tration(ContextClassLoaderMBeanServerInterceptor.java:108)
?????? at mx4j.server.MBeanServerImpl.registerImpl(MBeanServerImpl.java:1051)
?????? at mx4j.server.MBeanServerImpl.registerMBeanImpl(MBeanServerImpl.java:10
2)
?????? at mx4j.server.MBeanServerImpl.registerMBean(MBeanServerImpl.java:978)
?????? at org.apache.commons.modeler.Registry.registerComponent(Registry.java:8
1)
?????? at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.init(
ttp11Protocol.java:670)
?????? at org.apache.tomcat.util.net.TcpWorkerThread.getInitData(PoolTcpEndpoin
.java:527)
?????? at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ol.java:672)
?????? at java.lang.Thread.run(Thread.java:534)
006-4-19 14:55:47 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandl
r init
警告
: Error registering request
?
posted @
2006-04-20 08:54 小小程序程序員混口飯吃 閱讀(1125) |
評論 (1) |
編輯 收藏
在新的項目中,領導要求所有的圖片樣式表都必須使用相對路徑,../../來回寫很麻煩,跟我要求用絕對路徑/jsp/images,結果被領導批駁一番,唉,領導總是對的,誰叫俺是小兵呢
? 俺認為對的理由是
?? (1)用絕對路徑不用考慮考慮部署帶來的問題
?? (2)XP開發過程中,需要快速重構,特別是調整文件夾和模塊的時候,圖片樣式表都不用改動
?? (3)在SERVLET和JSP之間forward的時候,servlet的context path 跟JSP的context不可能永遠保持一致,會導致圖片和樣式表的路徑有誤,當你用struts的時候/login/login.do,與/jsp/login/login.jsp的conetext path不一致,會出現圖片路徑錯誤,要避免這個問題,必須調整.do 為/jsp/login/login.do,或者直接調整module 為config/jsp,才能調整過來.
?以上3點就是俺的理由,不知道俺錯了還是領導錯了
posted @
2006-04-19 20:54 小小程序程序員混口飯吃 閱讀(599) |
評論 (2) |
編輯 收藏
Ejb
的調用問題
?
?
?
環境:在
web.xml
中定義了
ejb
的方式
islocal,provider_url
,可以遠程調用,也可以本地調用
,
設計在
servlet plugin
里面緩存了
home
的接口,然后進行遠程的
2
個
weblogic
之間使用,
1
臺部署
war
包,另外一臺部署
ejb
應用,可以調用,沒有任何問題
.
按理說吧
wlclient.jar
打到
war
里面,然后把
WAR
部署在
Tomcat
上也能調用,當
servlet
起來的時候通過
plugin
把
home
接口緩存起來,一樣能運行,但是拋出異常。反復查找原因,原來是
tomcat
的
classloader
有問題,在
plugin
緩存的時候并沒有找到
wlclient
的包
(
我個人認為
)
,所以改動一下緩存
home
接口的方式,在
plugin
里面不實行緩存,在第一調用的時候緩存,
tomcat
啟動正常,程序運行也正常,問題得到解決,用的是weblogic 8.1 tomcat 4.1
posted @
2006-04-19 08:51 小小程序程序員混口飯吃 閱讀(3015) |
評論 (3) |
編輯 收藏