Here's the AS400JDBCConnection.setReadOnly(boolean readOnly) code that is throwing the error(JDError.EXC_TXN_STATE_INVALID). It appears that there's already an active transaction at the time it is called. Can't change the readOnly state while the transactionManager is active now, can we? Something is happening out of expected sequence in the Rollbase code, I'd say. Check your JDBC url connection string to see if the database is being set up readOnly right from the url. I think once the connection is made read-only, it can't be reset to read-write.

public void setReadOnly (boolean readOnly)
throws SQLException
{
checkOpen ();

if (transactionManager_.isLocalActive () || transactionManager_.isGlobalActive()) // @E4C
JDError.throwSQLException (this, JDError.EXC_TXN_STATE_INVALID); // @E4C

if ((readOnly == false)
&& ((properties_.getString (JDProperties.ACCESS).equalsIgnoreCase (JDProperties.ACCESS_READ_ONLY))
|| (properties_.getString (JDProperties.ACCESS).equalsIgnoreCase (JDProperties.ACCESS_READ_CALL))))
JDError.throwSQLException (this, JDError.EXC_ACCESS_MISMATCH);

readOnly_ = readOnly;

if (JDTrace.isTraceOn())
JDTrace.logProperty (this, "Read only", readOnly_);
}

-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of James Lampert
Sent: Wednesday, July 11, 2012 11:57 AM
To: Java Programming on and around the IBM i
Subject: Re: Anybody here have any experience running Rollbase on a V6box?(cross-posted)

Re:
Will looking at the journals tell us anything?

Joe Sam Shirah wrote:
Maybe. Worth checking out. I'd look for anything that happened
around that time. Depending on how the application is running, like
standalone or web app, there may be other areas to check: Server logs
and even QSysopr messages.

Here are the last few journal entries for the library, that appear to be
relevant:

2871 R UR RB_FI00001 RB_DB QZDASOINIT 11:10:27
2872 R DR RB_FI00001 RB_DB QZDASOINIT 11:10:27
2873 R DR RB_OBJ_DEF RB_DB QZDASOINIT 11:10:27
2874 C RB QZDASOINIT 11:10:27
2875 C SC QZDASOINIT 11:10:28
2876 C RB QZDASOINIT 11:10:28
2877 C EC QZDASOINIT 11:10:29

There are no spool files from that particular QZDASOINIT on the system, and no QSYSOPR messages at all within hours of the time given, other than a few terminal sessions timing out.

The installation is going through a Tomcat server on another physical box (a MacBook belonging to the fellow one desk over, and before that, presumably whatever computer belongs to the offsite developer), and the messages in catalina.out are the same as before, here reproduced in full:

Jul 10, 2012 11:10:27 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive master.war

==>> Master Server is starting
ROLLBASE_HOME=/Users/metekural/Downloads/apache-tomcat-6.0.35/rollbase
Host name: localhost:8080

==>> Installing local Rollbase instance
RB_1: UPDATE RB_ID SET NEXT_ID=?
Creating Master Zone: system records
Creating Master Zone: installing app1_rb.xml

===>> Installing application: Rollbase [v. 1] Created object
definition USER Created object definition $GROUP Created object
definition $SETTINGS Created object definition $ORG_FUNC Created
object definition COMMLOG Created object definition $ORG_LOCN Created
object definition $ORG_DEPT Created object definition todo Created
object definition meeting Finishing application: Rollbase...
java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:94)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at p12.a221._x24(a221.java:335)
at com.rb.core.data.a71.getReports(a71.java:843)
at p12.a221.getReports(a221.java:363)
at p12.a221.getByOriginalId(a221.java:112)
at p0.a39.createReport(a39.java:1128)
at p0.a39.createObjectDefParts2(a39.java:461)
at p0.a39.install(a39.java:242)
at p25.a343.checkInstallation(a343.java:96)
at com.rb.master.logics.servlet.Starter.init(Starter.java:65)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Rollbase (ID=1) on MASTER: SQLException ============== Error
installing Rollbase


java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:94)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at p12.a221._x24(a221.java:335)
at com.rb.core.data.a71.getReports(a71.java:843)
at p12.a221.getReports(a221.java:363)
at p12.a221.getByOriginalId(a221.java:112)
at p0.a39.createReport(a39.java:1128)
at p0.a39.createObjectDefParts2(a39.java:461)
at p0.a39.install(a39.java:242)
at p25.a343.checkInstallation(a343.java:96)
at com.rb.master.logics.servlet.Starter.init(Starter.java:65)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

==> Installation has failed, proceed to removing installed elements
Removing object: To-Do Rollback transaction #3 in thread 1 due to
java.sql.SQLException: Transaction state not valid.
===>> Finished application: Rollbase

java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:94)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at com.rb.core.services.event.a209._x24(a209.java:412)
at com.rb.core.data.a71.getTriggerDefs(a71.java:832)
at com.rb.core.services.event.a209.getTriggerDefs(a209.java:441)
at com.rb.core.services.event.a209.getByObjectDef(a209.java:60)
at com.rb.core.services.event.a209.delete(a209.java:384)
at com.rb.core.data.definition.DataObjectDefHandler.delete(DataObjectDefHandler.java:504)
at p0.a39.removeInatalledItems(a39.java:1588)
at p0.a39.install(a39.java:306)
at p25.a343.checkInstallation(a343.java:96)
at com.rb.master.logics.servlet.Starter.init(Starter.java:65)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jul 10, 2012 11:10:47 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive prod1.war

==>> Production Server is starting
Production Server PROD1: Initialization completed successfully

Jul 10, 2012 11:10:49 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive rest.war

==>> REST server is starting
Jul 10, 2012 11:10:50 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive router.war

==>> Router Server is starting
Jul 10, 2012 11:10:50 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive rss.war

==>> RSS server is starting
Jul 10, 2012 11:10:50 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive search.war

==>> Search Server is starting
Jul 10, 2012 11:10:50 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive storage.war

==>> Storage Server is starting
Jul 10, 2012 11:10:51 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive webapi.war

==>> Web API Server is starting
Jul 10, 2012 11:10:52 AM org.apache.catalina.startup.HostConfig
deployWAR
INFO: Deploying web application archive workflow.war

==>> Workflow server is starting
Jul 10, 2012 11:10:52 AM org.apache.catalina.startup.HostConfig
deployDirectory
INFO: Deploying web application directory docs Jul 10, 2012 11:10:52
AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT Jul 10, 2012 11:10:53
AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080 Jul 10, 2012 11:10:53 AM
org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009 Jul 10, 2012 11:10:53 AM
org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/42 config=null Jul 10, 2012 11:10:53 AM
org.apache.catalina.startup.Catalina start
INFO: Server startup in 26694 ms
java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:126)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at com.rb.core.services.event.a206.getMatured(a206.java:54)
at p33.a477.doJob(a477.java:42)
at com.rb.util.system.a450.run(a450.java:37)
java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:126)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at com.rb.core.services.event.a206.getMatured(a206.java:54)
at p33.a477.doJob(a477.java:42)
at com.rb.util.system.a450.run(a450.java:37)
java.sql.SQLException: Transaction state not valid.
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:360)
at com.ibm.as400.access.AS400JDBCConnection.setReadOnly(AS400JDBCConnection.java:2885)
at com.rb.util.db.a414.setReadOnly(a414.java:272)
at com.rb.util.db.a413.getConnection(a413.java:126)
at com.rb.util.db.a415.getConnection(a415.java:46)
at com.rb.util.db.a415.getConnection(a415.java:35)
at com.rb.core.services.event.a206.getMatured(a206.java:54)
at p33.a477.doJob(a477.java:42)
at com.rb.util.system.a450.run(a450.java:37)
Jul 10, 2012 11:48:44 AM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080 Jul 10, 2012 11:48:45 AM
org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/storage] appears to have started a thread named [Cleanup_Storage] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/webapi] appears to have started a thread named [HitsCounter] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/webapi] appears to have started a thread named [WebAPI_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearThreadLocalMap
SEVERE: The web application [/webapi] created a ThreadLocal with key of type [org.apache.axis.utils.XMLUtils.ThreadLocalDocumentBuilder] (value [org.apache.axis.utils.XMLUtils$ThreadLocalDocumentBuilder@56fb2ac4]) and a value of type [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl] (value [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl@3b4d679]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/router] appears to have started a thread named [ComponentChecker] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/router] appears to have started a thread named [ROUTER_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/search] appears to have started a thread named [Indexer] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/search] appears to have started a thread named [SEARCH_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/prod1] appears to have started a thread named [PROD1_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/rest] appears to have started a thread named [REST_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:46 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/rss] appears to have started a thread named [RSS_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/workflow] appears to have started a thread named [EventsCounter] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/workflow] appears to have started a thread named [EventChecker] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/workflow] appears to have started a thread named [WORKFLOW_Cleanup] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/workflow] appears to have started a thread named [AS400 Read Daemon-4] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
SEVERE: The web application [/workflow] appears to have started a thread named [AS400 Read Daemon-5] but has failed to stop it. This is very likely to create a memory leak.
Jul 10, 2012 11:48:47 AM org.apache.coyote.http11.Http11Protocol
destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080 Production Server is
shutting down...
Jul 10, 2012 11:48:47 AM org.apache.catalina.loader.WebappClassLoader
loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load com.rb.util.core.Log. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1566)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at p15.a246.closeAllSessions(a246.java:418)
at com.rb.prod.logics.servlet.Starter.shutDown(Starter.java:73)
at com.rb.prod.logics.servlet.Starter$1.run(Starter.java:56)
Exception in thread "Thread-4" java.lang.NoClassDefFoundError: com/rb/util/core/Log
at p15.a246.closeAllSessions(a246.java:418)
at com.rb.prod.logics.servlet.Starter.shutDown(Starter.java:73)
at com.rb.prod.logics.servlet.Starter$1.run(Starter.java:56)
Caused by: java.lang.ClassNotFoundException: com.rb.util.core.Log
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 3 more

If I'd had the common sense God gave the common slime mold (and I'd known the specific object in RB_DB, given that there are dozens there), I'd have done a WRKOBJLCK.

--
JHHL
--
This is the Java Programming on and around the IBM i (JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/java400-l.




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.