摘要: 最近深入的学习了一下
Spring,
感受到了
AOP
的威力,以前看过
BEA
的
DEV2DEV
杂志,有一期专门的
AOP
,里面很详细讲的,看了有一年多了,今天真正来作个例子
这个例子也是从
...
阅读全文
posted @
2006-05-18 18:04 小小程序程序员混口饭吃 阅读(396) |
评论 (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 小小程序程序员混口饭吃 阅读(1280) |
评论 (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看不到!!)
3
:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。也就是说你要的数据准确一致性好,就要牺牲一些数据的效率胃代价的
4
:
如果有在serializable事务开始时未提交的事务在serializable事务结束之前修改了serializable事务将要修改的行并进行了提交,则serializable事务提交的时候回法场发生无法序列化访问的错误
posted @
2006-05-16 15:37 小小程序程序员混口饭吃 阅读(574) |
评论 (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 小小程序程序员混口饭吃 阅读(365) |
评论 (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 小小程序程序员混口饭吃 阅读(2141) |
评论 (0) |
编辑 收藏
在nativeascii的时候一定要指定encoding:否则在windows下和linux下build的时候会出现问题,如果你在WINDOWS下测试,windows默认的是GBK,
而LINUX默认的却不是GBK,BUILD就会出问题,所以必须指定其encoding
posted @
2006-05-09 16:00 小小程序程序员混口饭吃 阅读(525) |
评论 (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 小小程序程序员混口饭吃 阅读(929) |
评论 (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 小小程序程序员混口饭吃 阅读(1122) |
评论 (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 小小程序程序员混口饭吃 阅读(591) |
评论 (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 小小程序程序员混口饭吃 阅读(3010) |
评论 (3) |
编辑 收藏