<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "Jforum in tomcat cluster problem"]]></title>
		<link>http://www.andowson.com/posts/list/7.page</link>
		<description><![CDATA[Latest messages posted in the topic "Jforum in tomcat cluster problem"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Jforum in tomcat cluster problem</title>
				<description><![CDATA[ andowson 你好..<br />   在架設JForum遇到了一些問題<br />   目前環境:<br />      OS:RHEL 5.0, iptables service 已經stop<br />      Server:<br />         IP:172.16.22.155<br />         Apache 2.2.11(loadbalancer)<br />         Tomcat 6.0.18(cluster)X2(同一台機器上)<br />      兩個Tomcat 的Server.xml Host 設定都為<br />      [code]&lt;Host name="172.16.22.155" debug="0" appBase="webapps" uppackWARs="true"&gt;<br />   &lt;Context path="/us" docBase="/home/httpd/web" reloadable="true" debug="0" distributable="true" crossContext="true"/&gt;<br />   &lt;Context path="/jforum" docBase="/home/httpd/JForum-SSO" reloadable="true" crossContext="true" distributable="true" debug="0"/&gt;<br /> &lt;/Host&gt;[/code]<br />     JForum 的部份<br />     SystemGlobals.properties 修改了cache.engine.implementation<br /> [code]cache.dir                   = cache<br /> cache.engine.default        = net.jforum.cache.DefaultCacheEngine<br /> #cache.engine.implementation = ${cache.engine.default}<br /> cache.engine.jboss          = net.jforum.cache.JBossCacheEngine<br /> cache.engine.implementation = ${cache.engine.jboss}[/code]<br />    jboss-cache-cluster.xml 加上了bind_addr<br />               [code] &lt;UDP mcast_addr="228.1.2.3" mcast_port="48866"<br />   ip_ttl="64" ip_mcast="true"<br />   mcast_send_buf_size="150000" mcast_recv_buf_size="80000"<br />   ucast_send_buf_size="150000" ucast_recv_buf_size="80000"<br />   loopback="false" bind_addr="172.16.22.155"/&gt;[/code]<br />   發現了一些問題<br />   1. Tomcat log 會出現Warning 和一些Error<br /> [code]Jun 29, 2009 1:55:46 PM org.jboss.cache.TreeCache _createService<br /> WARNING: No transaction manager lookup class has been defined. Transactions cannot be used<br /> Jun 29, 2009 1:55:46 PM org.jboss.cache.TreeCache createPessimisticInterceptorChain<br /> INFO: interceptor chain is:<br /> class org.jboss.cache.interceptors.CallInterceptor<br /> class org.jboss.cache.interceptors.PessimisticLockInterceptor<br /> class org.jboss.cache.interceptors.UnlockInterceptor<br /> class org.jboss.cache.interceptors.ReplicationInterceptor<br /> Jun 29, 2009 1:55:46 PM org.jboss.cache.TreeCache _createService<br /> INFO: cache mode is REPL_ASYNC<br /> Jun 29, 2009 1:55:46 PM org.jgroups.protocols.UNICAST setProperties<br /> SEVERE: window_size is deprecated and will be ignored<br /> Jun 29, 2009 1:55:46 PM org.jgroups.protocols.UNICAST setProperties<br /> SEVERE: min_threshold is deprecated and will be ignored<br /> Jun 29, 2009 1:55:46 PM org.jgroups.protocols.UDP createSockets<br /> INFO: sockets will use interface 172.16.22.155<br /> Jun 29, 2009 1:55:46 PM org.jgroups.protocols.UDP createSockets<br /> INFO: socket information:<br /> local_addr=172.16.22.155:11541, mcast_addr=228.1.2.3:48866, bind_addr=/172.16.22.155, ttl=64<br /> sock: bound to 172.16.22.155:11541, receive buffer size=80000, send buffer size=150000<br /> mcast_recv_sock: bound to 172.16.22.155:48866, send buffer size=150000, receive buffer size=80000<br /> mcast_send_sock: bound to 172.16.22.155:40306, send buffer size=150000, receive buffer size=80000<br /> <br /> -------------------------------------------------------<br /> GMS: address is 172.16.22.155:11541<br /> -------------------------------------------------------<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache startService<br /> INFO: my local address is 172.16.22.155:11541<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache viewAccepted<br /> INFO: viewAccepted(): [172.16.22.155:2456|1] [172.16.22.155:2456, 172.16.22.155:11541]<br /> Jun 29, 2009 1:55:48 PM org.jgroups.protocols.pbcast.STATE_TRANSFER handleStateRsp<br /> WARNING: state received from 172.16.22.155:2456 is null, will return null state to application<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache$MessageListenerAdaptor setState<br /> INFO: new cache is null (may be first member in cluster)<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache fetchStateOnStartup<br /> INFO: state could not be retrieved (must be first member in group)<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache startService<br /> INFO: Cache is started!![/code]<br /> [code]Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache viewAccepted<br /> INFO: viewAccepted(): [172.16.22.155:2456|1] [172.16.22.155:2456, 172.16.22.155:11541]<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache _getState<br /> INFO: locking the / subtree to return the in-memory (transient) state<br /> Jun 29, 2009 1:55:48 PM org.jboss.cache.TreeCache$MessageListenerAdaptor getState<br /> SEVERE: Caught java.lang.NoClassDefFoundError while responding to initial state transfer request; returning null[/code]<br /> 2. 進入Admin管理功能"控制台首頁"會出現<br /> [code]13:55:49,304  INFO [AbstractPoolBackedDataSource] Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -&gt; 3, acquireRetryAttempts -&gt; 30, acquireRetryDelay -&gt; 1000, autoCommitOnClose -&gt; false, automaticTestTable -&gt; null, breakAfterAcquireFailure -&gt; false, checkoutTimeout -&gt; 120000, connectionCustomizerClassName -&gt; null, connectionTesterClassName -&gt; com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -&gt; 8ea21d, debugUnreturnedConnectionStackTraces -&gt; false, description -&gt; null, driverClass -&gt; oracle.jdbc.OracleDriver, factoryClassLocation -&gt; null, forceIgnoreUnresolvedTransactions -&gt; false, identityToken -&gt; 8ea21d, idleConnectionTestPeriod -&gt; 3600, initialPoolSize -&gt; 3, jdbcUrl -&gt; jdbc:oracle:thin:springsdesign_en/tjp wu0 gk4ru4_en@172.16.22.155:1521:spring, maxAdministrativeTaskTime -&gt; 0, maxConnectionAge -&gt; 0, maxIdleTime -&gt; 0, maxIdleTimeExcessConnections -&gt; 0, maxPoolSize -&gt; 50, maxStatements -&gt; 0, maxStatementsPerConnection -&gt; 0, minPoolSize -&gt; 5, numHelperThreads -&gt; 3, preferredTestQuery -&gt; null, properties -&gt; {}, propertyCycle -&gt; 0, testConnectionOnCheckin -&gt; false, testConnectionOnCheckout -&gt; false, unreturnedConnectionTimeout -&gt; 180, usesTraditionalReflectiveProxies -&gt; false ]<br /> 13:55:49,775  INFO [ConfigLoader        ] Loading clickstream config from /home/httpd/JForum-SSO/WEB-INF/config/clickstream-jforum.xml<br /> 13:58:54,162  INFO [BasicResourcePool   ] A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@c23942<br /> 13:59:03,194  INFO [BasicResourcePool   ] A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@d16dc8<br /> java.net.ConnectException: Connection timed out<br />         at java.net.PlainSocketImpl.socketConnect(Native Method)<br />         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)<br />         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)<br />         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)<br />         at java.net.Socket.connect(Socket.java:507)<br />         at java.net.Socket.connect(Socket.java:457)<br />         at sun.net.NetworkClient.doConnect(NetworkClient.java:157)<br />         at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)<br />         at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)<br />         at sun.net.www.http.HttpClient.&lt;init&gt;(HttpClient.java:214)<br />         at sun.net.www.http.HttpClient.New(HttpClient.java:287)<br />         at sun.net.www.http.HttpClient.New(HttpClient.java:299)<br />         at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:792)<br />         at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:744)<br />         at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:669)<br />         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:913)<br />         at net.jforum.view.admin.AdminAction.readVersionFromSocket(AdminAction.java:200)<br />         at net.jforum.view.admin.AdminAction.checkBoardVersion(AdminAction.java:148)<br />         at net.jforum.view.admin.AdminAction.main(AdminAction.java:126)<br />         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />         at java.lang.reflect.Method.invoke(Method.java:585)<br />         at net.jforum.Command.process(Command.java:114)<br />         at net.jforum.view.admin.AdminAction.process(AdminAction.java:251)<br />         at net.jforum.JForum.processCommand(JForum.java:217)<br />         at net.jforum.JForum.service(JForum.java:200)<br />         at net.jforum.JForum.service(JForum.java:200)<br />         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)<br />         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br />         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />         at net.jforum.util.legacy.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:59)<br />         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)<br />         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br />         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />         at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)<br />         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)<br />         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)<br />         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)<br />         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)<br />         at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)<br />         at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)<br />         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)<br />         at java.lang.Thread.run(Thread.java:595)<br /> 13:59:08,879 ERROR [JForumExecutionContext] Error while commiting a transaction<br /> java.sql.SQLException: Closed Connection<br />         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)<br />         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)<br />         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)<br />         at oracle.jdbc.driver.OracleConnection.commit(OracleConnection.java:1366)<br />         at com.mchange.v2.c3p0.impl.NewProxyConnection.commit(NewProxyConnection.java:703)<br />         at net.jforum.JForumExecutionContext.finish(JForumExecutionContext.java:314)<br />         at net.jforum.JForum.handleFinally(JForum.java:262)<br />         at net.jforum.JForum.service(JForum.java:208)<br />         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)<br />         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br />         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />         at net.jforum.util.legacy.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:59)<br />         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)<br />         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br />         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />         at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)<br />         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)<br />         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)<br />         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)<br />         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)<br />         at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)<br />         at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)<br />         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)<br />         at java.lang.Thread.run(Thread.java:595)<br /> [/code]<br /> 3. 在Admin管理功能裡新建分區和版面卻在討論區頁面看不到,要重新啟動Tomcat 才看的到,<br />     權限部分有去檢查過都設為允許全部,快取也有去重新載入和清除<br />     但是若是修改或是刪除已經存在的分區或版面名稱馬上就可以在討論區頁面看到修改過後的結果<br />     是否為JBoss Cache 的問題<br /> <br /> 這些問題讓困擾許久 :( ,是否有解決方式或是設定上需做調整修改,希望andowson能給予指導和討論,thx  :) ]]></description>
				<guid isPermaLink="true">http://www.andowson.com/posts/preList/328/611.page</guid>
				<link>http://www.andowson.com/posts/preList/328/611.page</link>
				<pubDate><![CDATA[Mon, 29 Jun 2009 14:49:34]]> GMT</pubDate>
				<author><![CDATA[ moder]]></author>
			</item>
			<item>
				<title>回覆:Jforum in tomcat cluster problem</title>
				<description><![CDATA[ 以下是我的測試過程：<br /> <br /> 加上&lt;distributable /&gt;到WEB-INF/web.xml<br /> 在WEB-INF/config/jforum-custom.conf，加上：<br /> [code]cache.engine.implementation = ${cache.engine.jboss}[/code]<br /> 在iptables中加上48866這個udp port<br /> <br /> 重新啟動JForum，出現下列的錯誤訊息：<br /> [quote]HTTP Status 500 -<br /> <br /> type Exception report<br /> <br /> message<br /> <br /> description The server encountered an internal error () that prevented it from fulfilling this request.<br /> <br /> exception<br /> <br /> javax.servlet.ServletException: Servlet.init() for servlet jforum threw exception<br /> 	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br /> 	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)<br /> 	org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)<br /> 	org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:210)<br /> 	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br /> 	org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)<br /> 	org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)<br /> 	org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)<br /> 	org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)<br /> 	org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)<br /> 	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)<br /> 	java.lang.Thread.run(Thread.java:619)<br /> <br /> root cause<br /> <br /> java.lang.NoClassDefFoundError: javax/transaction/SystemException<br /> 	net.jforum.cache.JBossCacheEngine.init(JBossCacheEngine.java:73)<br /> 	net.jforum.ConfigLoader.startCacheEngine(ConfigLoader.java:230)<br /> 	net.jforum.JForumBaseServlet.init(JForumBaseServlet.java:113)<br /> 	net.jforum.JForum.init(JForum.java:91)<br /> 	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br /> 	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)<br /> 	org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)<br /> 	org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:210)<br /> 	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br /> 	org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)<br /> 	org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)<br /> 	org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)<br /> 	org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)<br /> 	org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)<br /> 	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)<br /> 	java.lang.Thread.run(Thread.java:619)<br /> <br /> root cause<br /> <br /> java.lang.ClassNotFoundException: javax.transaction.SystemException<br /> 	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)<br /> 	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)<br /> 	java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)<br /> 	net.jforum.cache.JBossCacheEngine.init(JBossCacheEngine.java:73)<br /> 	net.jforum.ConfigLoader.startCacheEngine(ConfigLoader.java:230)<br /> 	net.jforum.JForumBaseServlet.init(JForumBaseServlet.java:113)<br /> 	net.jforum.JForum.init(JForum.java:91)<br /> 	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br /> 	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)<br /> 	org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)<br /> 	org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:210)<br /> 	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)<br /> 	org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)<br /> 	org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)<br /> 	org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)<br /> 	org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)<br /> 	org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)<br /> 	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)<br /> 	java.lang.Thread.run(Thread.java:619)[/quote]<br /> <br /> 主要是找不到javax.transaction.SystemException這個類別，<br /> 用[url]http://www.findjar.com/[/url]搜尋一下，找到了一些包含這個類別的jar檔，以jboss-j2ee.jar為例，可以用下列方式來補上<br /> wget http://ncu.dl.sourceforge.net/sourceforge/jboss/jboss-4.2.3.GA-jdk6.zip<br /> unzip jboss-4.2.3.GA-jdk6.zip<br /> cp jboss-4.2.3.GA/jboss-4.2.3.GA/server/all/lib/jboss-j2ee.jar /home/andowson/www/WEB-INF/lib/.<br /> <br /> 重新啟動JForum後，可以正常顯示了，但是在log檔內卻出現下列的錯誤訊息：<br /> <br /> [quote]Target exception: org.jgroups.ChannelException: failed loading class: java.lang.ClassNotFoundException: [Ljava.lang.Object;<br /> <br /> org.jgroups.ChannelException: failed loading class: java.lang.ClassNotFoundException: [Ljava.lang.Object;<br />         at org.jgroups.conf.ClassConfigurator.init(ClassConfigurator.java:92)<br />         at org.jgroups.conf.ClassConfigurator.getInstance(ClassConfigurator.java:112)<br />         at org.jgroups.stack.ProtocolStack.&lt;init&gt;(ProtocolStack.java:48)<br />         at org.jgroups.JChannel.&lt;init&gt;(JChannel.java:254)<br />         at org.jgroups.JChannel.&lt;init&gt;(JChannel.java:234)<br />         at org.jboss.cache.TreeCache._createService(TreeCache.java:1212)<br />         at org.jboss.cache.TreeCache.startService(TreeCache.java:1242)<br />         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />         at java.lang.reflect.Method.invoke(Method.java:597)<br />         at bsh.Reflect.invokeMethod(Unknown Source)<br />         at bsh.Reflect.invokeObjectMethod(Unknown Source)<br />         at bsh.Name.invokeMethod(Unknown Source)<br />         at bsh.BSHMethodInvocation.eval(Unknown Source)<br />         at bsh.BSHPrimaryExpression.eval(Unknown Source)<br />         at bsh.BSHPrimaryExpression.eval(Unknown Source)<br />         at bsh.Interpreter.run(Unknown Source)<br />         at bsh.Interpreter.main(Unknown Source)[/quote]<br /> <br /> 利用[url]http://www.jforum.net/posts/list/1306.page#5605[/url]這個網址提供的測試方法測了一下：<br /> <br /> [code]<br /> export CACHE_LIB=/home/andowson/www/WEB-INF/lib<br /> export JFORUM=/home/andowson/www/WEB-INF<br /> <br /> export CLASSPATH=.:$JFORUM/classes:$CACHE_LIB/commons-logging-api.jar:$CACHE_LIB/bsh-2.0b4.jar:$CACHE_LIB/jboss-j2ee.jar:$CACHE_LIB/jboss-remoting.jar:$CACHE_LIB/jgroups-all-2.2.9-beta2.jar:$CACHE_LIB/jboss-cache-1.2.4.jar:$CACHE_LIB/jboss-jmx.jar:$CACHE_LIB/jboss-minimal.jar:$CACHE_LIB/jboss-common.jar:$CACHE_LIB/jboss-system.jar:$CACHE_LIB/log4j-1.2.12.jar:$CACHE_LIB/concurrent.jar:$JFORUM/lib/jcaptcha-core-1.0-RC1.jar:$JFORUM/lib/jcaptcha-engine-1.0-RC1.jar:$JFORUM/lib/jcaptcha-all-1.0-RC2.0.1.jar<br /> <br /> java bsh.Interpreter<br /> <br /> show();<br /> import org.jboss.cache.*;<br /> import org.jboss.cache.aop.*;<br /> org.apache.log4j.xml.DOMConfigurator.configure("/home/andowson/www/WEB-INF/log4j.xml");<br /> cache = new TreeCache();<br /> config = new PropertyConfigurator();<br /> config.configure(cache, "/home/andowson/www/WEB-INF/config/jboss-cache-cluster.xml");<br /> cache.startService();<br /> cache.put("level1", "key1", "value1");<br /> exit();<br /> [/code]<br /> <br /> 結果也是一樣，利用[google]org.jgroups.ChannelException: failed loading class: java.lang.ClassNotFoundException: [Ljava.lang.Object;[/google]這個錯誤訊息找到了這個網頁：<br /> http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4124237#4124237<br /> 發現是JDK 1.6的問題，解決的方法如果不降回JDK 1.5的話有兩種方法：<br /> 一種是在java啟動時加上-Dsun.lang.ClassLoader.allowArraySyntax=true的參數<br /> 另一種是換成新版的jgroups.jar<br /> 用方法一測了一下：<br /> java -Dsun.lang.ClassLoader.allowArraySyntax=true bsh.Interpreter<br /> 確實可以跑了，不過還是在JForum群組設定時有問題<br /> <br /> 換成較新版本的JGroups<br /> wget http://ncu.dl.sourceforge.net/sourceforge/javagroups/JGroups-2.7.0.GA.bin.zip<br /> unzip JGroups-2.7.0.GA.bin.zip<br /> cp JGroups-2.7.0.GA.bin/jgroups-all.jar /home/andowson/www/WEB-INF/lib/jgroups-all-2.7.0.GA.jar<br /> mv /home/andowson/www/WEB-INF/lib/jgroups-all-2.2.9-beta2.jar /tmp<br /> <br /> 重新啟動後，再去新增版面，結果就如同moder所說的，新增的版面無法顯示，只有重新啟動JForum後才行。<br /> <br /> 結論：<br /> JForum不支援JBoss Cache用在Tomcat Cluster架構中。請用原先預設的DefaultCacheEngine。<br /> <br /> 備註：在EhCacheEngine.java的開頭可以找到一段註解：<br /> [quote] * The rest of the application seems to make some invalid assumptions about how<br />  * things are cached.  Those assumptions might be benign, but it is hard to tell<br />  * without deep testing.  Until this is finished the JBossCacheEngine should be <br />  * configured in a local mode.[/quote]<br /> 看來是不建議使用JBossCacheEngine在JForum上線環境中。<br /> 然後跟Rafael討論，他說他也沒在上線環境用過JBossCacheEngine。]]></description>
				<guid isPermaLink="true">http://www.andowson.com/posts/preList/328/612.page</guid>
				<link>http://www.andowson.com/posts/preList/328/612.page</link>
				<pubDate><![CDATA[Tue, 30 Jun 2009 01:50:29]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:Jforum in tomcat cluster problem</title>
				<description><![CDATA[ andowson 謝謝你的詳細測試與建議說明,<br /> 讓問題有所解答..<br /> 辛苦你了]]></description>
				<guid isPermaLink="true">http://www.andowson.com/posts/preList/328/613.page</guid>
				<link>http://www.andowson.com/posts/preList/328/613.page</link>
				<pubDate><![CDATA[Tue, 30 Jun 2009 10:12:23]]> GMT</pubDate>
				<author><![CDATA[ moder]]></author>
			</item>
	</channel>
</rss>
