??xml version="1.0" encoding="utf-8" standalone="yes"?>
最q做AJAX框架时发CU方?不仅可以跨域,而且相比XHR可以省去很多解析XML的步?
后来居然发现GoogleMap的API在?非常惊喜,赶快分n一?br>
test.html
<html>
<title>Dynamic Script Object</title>
<head/>
<body>
<div id="jsArea">
<script id="js" src=testa.js></script>
</div>
<br>
<input type="button" value="test" onclick="testSrc()">
</body>
</html>
<script>
//author:Kerwin.Weng
//mail:hunteva@163.com
function testSrc(){
var jsObj = document.getElementById("js");
var body = jsObj.parentNode;
body.removeChild(jsObj);
jsObj = null;
var newJS=document.createElement("script");
newJS.id = "js";
newJS.src = "testb.js";
body.appendChild(newJS);
jsArea.innerHTML="Asynchronous"
}
var jsArea = document.getElementById("jsArea");
</script>
AJAX | DSSO | |
跨域讉K | 不支?/td> | 支持 |
异步操作 | 支持 | 支持(body.appendChild后不需要等到完成才会l?当然完整的异步访问需要另外的pattern来支? |
数据载体 | XML或JSON或TEXT | 可以直接由server写成Javascript |
操作复杂?/td> | 需要解析XML或JSON | 可以直接使用 |
范例如下Qcatalina.batQ:
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Xms128m -Xmx256m
-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" ......
U色的内容ؓd的内容,随后cM于此的三个位|都如上q行dQxms为初始最分配内存,xmx为最大允许分配内存。tomcat启动Ӟ按照xms q行内存的分配,当JVM内存不Ӟ再q行分配Q但最大不能超qxmx讑֮的倹{一般将xms和xmx讑֮为同L倹{?/p>
2.TOMCAT在运行过E中可以实时监控当前应用JVM的占用情cTOMCAT本n带的应用manager可以q行服务器状态的监控。ؓ了运行该E序Q需要创色manager和对应的用户?/p>
创徏位置在conf/tomcat-users.xml中,内容如下所C:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="tomcat" roles="admin,manager"/>
</tomcat-users>
创徏了角色manager和用户admin/tomcat后就可以使用manager应用了?/font>
在IE中键入httpp://localhost:8080Q进入tomcat的主界面Q然后选择左面?
|
选择最x的?font color="#000000">Server Status”,便可以看到JVM的占用情c?/p>
Free memory: 3.69 MB Total memory: 10.60 MB Max memory: 63.31 MB
Free memory:当前可用的内存;
Total memory:当前已经分配的JVM内存Q?/p>
Max memory:当前允许分配的最大JVM内存Q?/p>
l于q是要部|到Weblogic上的
l过一下午的调?ȝ改两个地?br />1:Spring的servlet装蝲序
Tomcat是标准的Servlet2.4规范的容?能够很好的维持servlet加蝲的顺?
但是Weblogic9.x不是,因此加蝲的时候需要换用Spring的另一个Servlet来保证加载的序正确
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springfromword.context.ContextLoclageServlet</servlet-class>
</servlet>
2.Acegi的filter也需要改变装载的c?
<filter>
<filter-name>acegifilter</filter-name>
<filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<!--<param-value>net.sf.acegisecurity.util.FilterChainProxy</param-value>-->
<param-value>net.sf.acegisecurity.context.HttpSessionContextIntegrationFilter</param-value>
</init-param>
</filter>
3.更换两个包antlr和cglib
Spring要求antlr 2.7.5 的支?但是Weblogic9的Weblogic.jar中集成的版本不够?所以启动会报错
修改启动weblogic启动的环境变量,这个包加在weblogic.jar包之前(注意一定要加在前面Q?br />weblogic 8中修改:bea\weblogic81\common\bin\commEnv.cmd(.sh)q个文g?br />weblogic 9中修改:bea\weblogic90\common\bin\commEnv.cmd(.sh)q个文gQ?br />修改后大体如下所C:
set WEBLOGIC_CLASSPATH=%PATCH_CLASSPATH%;%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\antlr-2.7.5.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar
可以解军_weblogic server 上部|spring应用E序的问题了?br />如果在加载中q碰到java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)q个问题出现Q则必须cglib-nodep-2.1_2.jar也加到classpath中weblogic.jar之前?br />或者对于weblogic server 9在weblogic.xml中?br /><container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
优先使用web-inf中用的class而不是用先用weblogic.jar包中的ClassVisitorq个cR?针对weblogic server 9)
<bean id="abstractTmsSessionProxy" abstract="true">
<property name="sessionFactory" ref="tmsSessionFactory"/>
</bean>
<bean id="abstractWmsSessionProxy" abstract="true">
<property name="sessionFactory" ref="wmsSessionFactory"/>
</bean>
<bean id="abstractFmsSessionProxy" abstract="true">
<property name="sessionFactory" ref="fmsSessionFactory"/>
</bean>
<!-- WMS data source -->
<bean id="innerDataSourceWms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="driverName">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
</property>
<property name="user">
<value>t_wms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="dataSourceWms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<ref local="innerDataSourceWms"/>
</property>
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="maxSize">
<value>10</value>
</property>
<property name="user">
<value>t_wms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="wmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceWms"/>
<property name="lobHandler" ref="lobHandler"/>
<property name="mappingResources">
<list>
........
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="jtaTransactionManager">
<ref bean="jotm"/>
</property>
</bean>
<!--TMS data source-->
<bean id="innerDataSourceTms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="driverName">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
</property>
<property name="user">
<value>t_tms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="dataSourceTms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<ref local="innerDataSourceTms"/>
</property>
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="maxSize">
<value>10</value>
</property>
<property name="user">
<value>t_tms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="tmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceTms"/>
<property name="lobHandler" ref="lobHandler"/>
<property name="mappingResources">
<list>
....
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="jtaTransactionManager">
<ref bean="jotm"/>
</property>
</bean>
<!--FMS data source-->
<bean id="innerDataSourceFms" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="driverName">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@10.4.1.110:1521:testdb</value>
</property>
<property name="user">
<value>t_fms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="dataSourceFms" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
<property name="dataSource">
<ref local="innerDataSourceFms"/>
</property>
<property name="transactionManager">
<ref local="jotm"/>
</property>
<property name="maxSize">
<value>10</value>
</property>
<property name="user">
<value>t_fms</value>
</property>
<property name="password">
<value>111</value>
</property>
</bean>
<bean id="fmsSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceFms"/>
<property name="lobHandler" ref="lobHandler"/>
<property name="mappingResources">
<list>
.....
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="jtaTransactionManager">
<ref bean="jotm"/>
</property>
</bean>
׃前期使用中的发现XAPoolq个包里面有c老是报连接方面的错误,于是在参考了一网上的文章后把xapool和包装连接的配置都去掉了,l果D的是多数据源的事务根本无法实?后来仔细x,觉得很诡?xapool是jotm实现多数据源事务的关键所?怎么能不?
于是仔细研究了下,发现很多问题,首先,JOTM需要的依赖--CAROL包没有JDK1.5的版?需要自׃载源码ƈ~译成新的ow_carol-all.jar
Xapool倒是有JDK1.5的版本xapool-1.5.0,但是跑v来老是报错,于是M了xapool的源文g,发现居然源码都不能编译通过,q有JDK1.5的保留字在里?真不知道作者是怎么发布?.5.0?于是自己Ҏ(gu)关键?q修补了一些检查不太严格的?q新打了个版本.l果跑v来还是会报错,不过是oracle报游标用的错误.
搜了一把就发现原来是Oracle9i有名的内存溢出bugD:Xapool对PreparedStatementq行了CacheQ同时Oracle有一个出名的内存漏洞QPreparedStatement使用之后必须关闭Q如果不关闭q箋q行SQL查询会造成前面SQL的游标不能释放;
参考了|上的修Ҏ(gu)?xapool1.4?,又自qI了半天,最后终于成功了,Xapool1.5的修改如?
修改StandardConnectionPoolDataSourcecȝpublic static final int DEFAULT_PREPAREDSTMTCACHESIZE = 0,(当然也可以用配置的方式来注入)
q样关闭了PreparedStatement的Cache,而且也不会造成什?.4中关闭连接时的异常等{?
最后根据实际情?讄好dataSourceXXXq几个bean的lifeTime,sleepTime,maxSize,checkLevelObject属?具体意义和设|方法可以参考网上的说明)
q于可以正式用了,试了下,情况q不?)
最q有很多朋友都说他们配置不成?可能是某些细节造成的吧,因ؓq套pȝ现在正在TCL总部利的运转着,所有我怿q个Ҏ(gu)q是可行?如果大家有什么问题需要我帮助,我很乐意帮忙,有h说要我自己改的xapool1.5,因ؓ再我改好后不?1.6已l发布了,所有我没有脓(chung)出来?有问题的朋友可以直接留言我你的msn,我会加你?
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>
因ؓOracle9i处理Clob的方式和别的数据库很不一?甚至与Oracle10g都不兼容,所以这里要用spring提供的SimpleNativeJdbcExtractor.如果使用Oracle10g的话,可以直接使用:
<bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
对应的应该用Oracle10g对应的JDBC驱动.
4.在领域对象的hbm中对应的Clob字段应该使用q样的定?
<property name="context" column="context" type="org.springframework.orm.hibernate.support.ClobStringType" length="1048576000"/>
q里的length是字节了,不是长度?最大可以设?G.对应?该字D在领域对象中直接申明成String可以了.当对q个字段写入长数据时直接调用其setҎ(gu)可以了,Spring会自己帮你做余下的处?让你透明的处理Clob字段.
5.业务逻辑层对该字D늚操作必须需要在有事务管理的Ҏ(gu)中?否则会报:
java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required q个错误