Infinite loop - A stale JDBC connection was detected in the connection pool
Hello.
I have a simple JSP (no servlets) application with a single Fastlane Reader style view object to back it up. I'm deploying my application under OC4J 10g 9.0.4 using BC4J 9.0.3.11.50 (JDev 9.0.3.3) on RHEL 3.0, j2sdk1.4.2_03.
I run with -Djbo.debugoutput=console
Every so often, intermittently, and totally unpredictably, I see this on stdout for OC4J:
03/12/23 07:42:07 [33326] A stale JDBC connection was detected in the connection pool
03/12/23 07:42:07 [33327] Creating a new pool resource
03/12/23 07:42:07 [33328] Trying connection/2: url='jdbc:oracle:thin:@somedb:1521:somedbsid' info='{user=someuser, password=somepass, dll=ocijdbc9, protocol=thin}' ...
This message occurs over and over ultimately resulting in hundreds upon thousands of failed connections to the database. I have to forcibly restart OC4J to stop it.
The weird thing about it is that it seems to only start doing this on one system (which is our internal deployment site); it works fine under an OC4J running in IDE or on a preproduction machine.
Has anyone experienced this before - or at the very least, can clue me in on getting BC4J to be a little more verbose on the connection failure?
Thanks and Happy Holidays,
Sean
Hi did you find an answer?
if so, could you post it here?
thanks
Similar Messages
-
I have successfully added an ExceptionHandler to Toplink which does catch stale JDBC connections and refreshes them.
However, once in while this does not work and I see this in the logs:
2004-09-07 13:14:52 StandardWrapperValve[action]: Servlet.service() for servlet
action threw exception
java.lang.NullPointerException
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.reestablishCo
nnection(DatabaseAccessor.java:1326)
at us.fed.fs.toplink.ExceptionHandler.handleException(ExceptionHandler.j
ava:71)
at oracle.toplink.publicinterface.Session.handleException(Session.java:1
824)
at oracle.toplink.publicinterface.UnitOfWork.commitToDatabaseWithChangeS
et(UnitOfWork.java:1108)
at oracle.toplink.publicinterface.UnitOfWork.commitRootUnitOfWork(UnitOf
Work.java:927)
at oracle.toplink.publicinterface.UnitOfWork.commitAndResume(UnitOfWork.
java:784)
I suppose I could add another exception trap in the ExceptionHandler to retry the re-establish connection call, but I am afraid this would set up a never endling loop.
Does anyone have insight on why reestablish connection sometimes fails? Is there an established procedure to deal with it?
Thanks,
BradHi. This is a consequence of DBMS policies. The client should not have
to close it's connection(s), but should be able to close it's currently open
prepared/callable statements and remake them.
WebLogic is able to do that, and maybe your middleware can too, but
if not, it's not a driver issue or anything the driver can handle automatically.
The DBMS can invalidate the query plan at any time. It might be a DBMS
enhancement request to have an option where existing clients remain
old query plan (if possible), but that would be a difficult thing to implement.
The DBMS would have to be able to interpret whether any give change in
the DBMS schema would hurt the semantics and/or construction of all
existing compiled query plans, and I bet those compiled query plans don't
keep enough metadata to determine that. It would take a virtual recompile
in any case to be sure.
Joe Weinstein at BEA Systems -
Issue JDBC connection pool with Glassfish 3.1.2.2 and Oracle XE 11gR2
Hello,
I am experiencing an issue with pinging a JDBC connection Pool.
I installed the following without any warnings or errors:
Operating System: Oracle Enterprise Linux 5
Oracle XE 11gR2 (11.2.0.2.0) database
Glassfish 3.1.2.2
I will refer to the steps I did after the installations
1) In the .profile file of the OS I add the following:
JRE_HOME=/usr/java/jre1.6.0_31; export JRE_HOME
JAVA_HOME=/usr/java/jdk1.6.0_31; export JAVA_HOME
GLASSFISH_DIR=/u01/glassfish3
GLASSFISH_HOME=/u01/glassfish3/glassfish
DERBY_HOME=$GLASSFISH_DIR/javadb
OPEN_MQ_HOME=$GLASSFISH_DIR/mq
PATH=:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HOME/bin:$GLASSFISH_HOME/bin:$DERBY_HOME/bin:$OPEN_MQ_HOME/bin
export GLASSFISH_HOME
export DERBY_HOME
export OPEN_MQ_HOME
export PATH
LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib; export LD_LIBRARY_PATH
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
2) I copied the ojdbc6.jar to the $GLASSFISH_HOME/domains/domain1/lib
3) I login to the Glassfish admin console and created a new JDBC Connection Pool.
Pool Name: ds_orasys
Resource Type: javax.sql.DataSource
Datasource Classname: oracle.jdbc.pool.OracleDataSource
User: [myschema]
Password: [myschema password]
URL: jdbc:oracle:thin:@localhost:1521:xe
When I ping the connection pool I get the following message in the server log:
[#|2012-10-23T12:14:37.069+0300|WARNING|glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors.service|_ThreadID=22;_ThreadName=Thread-2;|RAR8054: Exception while creating an unpooled [test] connection for pool [ ds_orasys ], Connection could not be allocated because: Invalid Oracle URL specified|#]
[#|2012-10-23T12:14:37.071+0300|SEVERE|glassfish3.1.2|org.glassfish.admingui|_ThreadID=19;_ThreadName=Thread-2;|RestResponse.getResponse() gives FAILURE. endpoint = 'http://212.205.62.217:4848/management/domain/resources/ping-connection-pool.json'; attrs = '{id=ds_orasys}'|#]
I tried to use different jar files. I used ojdbc6dms.jar and ojdbc14.jar.
I also copied the jar files in the $GLASSFISH_HOME/domains/domain1/lib/ext directory as some people suggested. Still no luck. I keep getting the same error messages in the server.log
Can anybody help me out or point me to the right direction.
Thank you in advanceThe error is in the URL. It was in front of my eyes and I couldn't see the error. I skipped the ':' before the '@' when I created the pool. It is working fine now.
-
JDBC Connection pool recovery after DB server restart
I am finding that Kodo is throwing the following exception after I restart
my database server (mysql). I am doing the database server restart while my
application server is idle, so it is not during a transaction.
Communication link failure: java.net.SocketException [code=0;state=08S01]
NestedThrowables:
com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper:
This is presumably due to the JDBC connection pooling. Is there a
configuration setting that allows Kodo to detect such failures and reconnect
to the database server without exposing this problem to the application
code? For example, WebLogic Server's JDBC connection pool has a setting that
enables testing a connection and recovering from such failures before
allocating it from the pool.
BenThis is presumably due to the JDBC connection pooling. Is there a
configuration setting that allows Kodo to detect such failures and reconnect
to the database server without exposing this problem to the application
code?Not right now. You can log an enhancement request with our bug database:
http://bugzilla.solarmetric.com/ -
JDBC connection pool failures when used by JMS stores
We are using WebLogic 6.1 sp2. We defined a separate connection pool for use by
a JMS Store.
<JDBCConnectionPool Name="sybaseJMSPool"
Targets="cluster00"
InitialCapacity="2"
MaxCapacity="10"
DriverName="com.sybase.jdbc2.jdbc.SybDriver"
Properties="[email protected]@;[email protected]@;charset=utf8"
URL="jdbc:sybase:Tds:@jms.db.host@/@jms.db.name@"/>
(note that the @xxx@ string are replaced by actual values).
We are using Sybase Jconnect 5.5 to a Sybase ASE 12.5 database.
We deployed this configuration on a number of environments (testing, staging,
..). The actual hardware and network configuration is different for the different
system, but the WebLogic domain stays the same regarding this issue.
On the test system we frequently get the following exceptions:
<Aug 13, 2002 1:56:04 PM CEST> <Alert> <JMS> <www00-test> <node00>
<ExecuteThread: '6' for queue: 'JMS.TimerClientPool'> <> <> <040048>
<JMSServer "JMSServer00", store failure while writing message for topic
OrderChangeTopic, java.io.IOException: JMS JDBC store, connection pool =
<sybaseJMSPool>, prefix = <JMS00>: write failed
java.sql.SQLException: JZ006: Caught IOException:
com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
closed.
at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
(ErrorMessage.java:715)
at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
(SybStatement.java:1625)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
(SybPreparedStatement.java:91)
at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
(P6LogPreparedStatement.java:179)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
.>
java.io.IOException: JMS JDBC store, connection pool = <sybaseJMSPool>, prefix
= <JMS00>: write failed
java.sql.SQLException: JZ006: Caught IOException:
com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
closed.
at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
(ErrorMessage.java:715)
at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
(SybStatement.java:1625)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
(SybPreparedStatement.java:91)
at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
(P6LogPreparedStatement.java:179)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
at weblogic.jms.store.JDBCIOStream.throwIOException
(JDBCIOStream.java:1213)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1256)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Before that this message appeared:
<Aug 13, 2002 11:31:16 AM CEST> <Error> <ConnectionManager> <www00-test>
<node00> <ExecuteThread: '26' for queue: 'default'> <> <> <000000>
<Closing: 'weblogic.rjvm.t3.T3JVMConnection@795af6' because of: 'Server
received a message over an uninitialized connection: 'JVMMessage from: 'null'
to: '-4555218188801970213S:192.168.13.1:[7001,7001,7002,7002,7001,7002,-
1]:ADIS:node00' cmd: 'CMD_REQUEST', QOS: '101', responseId: '1',
invokableId: '287', flags: 'JVMIDs Not Sent, TX Context Not Sent', abbrev
offset: '34'''>
This problem did not occur on another system which was used during a 2 day stress
testing session.
It seems that the problem occurs after a period in which no user request where
made. The user requests trigger EJB's that start sending JMS messages.
When the problem occurs, the JMS messaging systems seems to lock up as no messages
are received anymore by the different listeners (MDBs).
Undeploying and redeploying the JBDC connection pool solves the problem. This
solution is unacceptable in case of a production system.
A similarly defined connection pool, which is used by the EJBs to make database
connection, does not manifest this problem.
<JDBCConnectionPool Name="sybasePool"
Targets="cluster00"
InitialCapacity="10"
CapacityIncrement="5"
MaxCapacity="50"
PreparedStatementCacheSize="150"
DriverName="com.sybase.jdbc2.jdbc.SybDriver"
Properties="[email protected]@;[email protected]@;JCONNECT_VERSION=6;charset=utf8"
URL="jdbc:sybase:Tds:@db.host@/@db.name@"/>
The JDBC connection pool is used as follows by the JDBC store
<JMSJDBCStore ConnectionPool="sybaseJMSPool" Name="JDBCStore00" PrefixName="JMS00"/>
<JMSServer Name="JMSServer00" Store="JDBCStore00" Targets="node00">
<JMSTopic JNDIName="ADIS.JMSError" JNDINameReplicated="false" Name="ErrorTopic"/>
<JMSTopic JNDIName="ADIS.Status"
Name="StatusTopic" RedeliveryDelayOverride="300000"/>
<JMSTopic JNDIName="ADIS.OrderChange" JNDINameReplicated="false"
Name="OrderChangeTopic" RedeliveryLimit="3"/>
</JMSServer>
Turning on the "Test Reserved Connection" with a appropriate test table does not
help.
Some sources on the internet tell us that JZ0C0 errors in the Jconnect driver
can be related to network problems. Nevertheless the connection pool should be
able to cope with this.
Can you provide any solution for this ? Or give us hints what can cause the problem
Zhenhao Qi wrote:
thanks! Joe.
The SQL statement itself can no longer be simplified, the long excuation time is due to the database size and complicated Select criteria. I can easily reproduce the problem by using this SQL. I tried "BEA's Oracle driver (Type 4): Version 8.1.7,9.0.1,9.2.0". the question can be dissect into 2 pieces:
1) why the jdbc connection (using oracle.jdbc.OracleDriver) won't return anything if the SQL execution time > 5min, that is probably the Oracle's problem
2) why the occupied connection pool won't release even I set "Statementtimeout=600", this is Weblogic's problem.
ZhenhaoHi. Yes, (1) is oracle's problem. (2) may also be. The JDBC spec has very few
allowances for one thread to interrupt a second thread's JDBC call. If we
transmit your timeout request by calling setQueryTimeout() on the oracle
statement, and if you have a weblogic-controlled transaction we call
Statement.cancel() on any ongoing statement, we end up relying on whether
the Oracle driver implements and responds to those calls.
Are you doing weblogic-controlled transactions? Are you/can you
call Statement.setQueryTimeout() on your statements, or are these
generated JDBC queries?
If you can duplicate the problem using the weblogic.jdbc.oracle.OracleDriver
we have some other debug avenues. This would be good even if you really
want to use the thin driver, because we will do the same JDBC calls to
either driver, and the debug would prove (if) we set up a query timeout
and if we call cancel(). If we do, then we can know that it is the Oracle
driver failing in these regards.
Joe -
JDBC Connection pools and clusters (is max connection for entire cluster?)
Hi,
Quick question.
When using JDBC connection pools in WAS 6.40 (SP13) in a clustered environment. Are the max connections the number
a)Each application server can use
b)The entire cluster can use
Would believe a), but I'd like it confirmed from someoneelseHi Dagfinn,
your assumption is correct. Therefore, in a cluster environment you'd need to make sure the DB can open <i>Number of nodes X max connections</i>. -
Issues with JDBC Connection Pooling
Hi all,
I'm experiencing some unexpected behaviour when trying to use JDBC Connection Pooling with my BC4J applications.
The configuraiton is -
Web Application using BC4J in local mode
Using Default Connection Stagegy
Stateless Release Mode
Retrieving Application Modules using Configuration.createRootApplicationModule( am , cf );
Returning Application Modules using Configuration.releaseRootApplicationModule( am, false );
Three application modules
AppModuleA - connects to DatabaseConnection1
AppModuleB - connects to DatabaseConnection2
AppModuleC - connects to DatabaseConnection2
My requirement is to -
Use App Module Pooling and have individual pool for each Application Module
Use JDBC Pooling and have individual pool for each Database connection
Note: All configuration was achieved in design mode (i.e. right clicking AppModule->Configurations...)
1. Initial approach -
In the configuration for each Application Module I specified the connection type as 'JDBC Datasource' and specified to approriate datasource.
Tried setting doConnecitonPooling to 'true' as well as 'false'
In the data-sources.xml I specified all the appropriate info including min-connections and max-connections.
I would expect, with the above config that BC4J would use OC4J's built in JDBC connection pooling.
2. Second approach -
In the configuration for each Application Module I specified the connection type as JDBC URL.
In the configuration I specified doConnectionPooling = 'true' as well as the max connection, max available and min available
What I experienced in both cases was that the max connections seem to be ignored as the number of connection as reported by the database (v$session) was exceeded by more than 10.
In addition to this once the load was removed the number of JDBC connecitons did not drop (I would have expected it to drop to max available connections)
My questions are -
1. When specifying to use a 'JDBC Datasource' style of connection, is it in fact OC4J that is then responsible for pooling JDBC connections? And in this case should BC4J's doConnectionPooling parameter be set to true or false?
2. Are there any known issues with the use of the JDBC Conneciton Pool as stated by the above to approaches?Thanks for the additional info. Please see my comments. below.
Sorry should have been more specififc -
1. Is each application pool using a different JDBC user? You mentioned DatabaseConnection1 and DatabaseConnection2
above; are these connections to different schemas / users? If so, BC4J will create a separate connection pool for each
JDBC user. Each connection pool will have its own maximum pool size.
Each 'DatabaseConnection' refers to a different database, actually hosted on a seperate physical server, different
schema and different user.BC4J will maintain a separate connection pool for each permutation of JDBC URL / schema. If each user is connecting
to a different DB instance then I would expect no greater than 10 DB sessions. However, if a DB instance is hosting
more than user then I would expect greater than 10 DB sessions (though still no more than 10 DB sessions per user).
2. Are all the v$session sessions related to the JDBC clients? There should be at least one additional database
session which will be related to the session that is querying v$session.
When querying the v$session table I specifically look for connections from the user in quesiton and from the machine
name in question and in doing so eliminate the database system's connections, as well as the query tools'
connection. One area I'm not sure about is the connection BC4J uses to write to its temporary tables. I am using
Stateless release mode and have not explicetly stated to save to the database but I'm wondering if it still does if so
and how does it come into the equation with max connections?BC4J's internal connections are also pooled and the limits apply as mentioned above. So, if you have specified
internal connection info for a schema which is different than the users above I would expect the additional conns.
One helpful diagnostic tool, albeit programmatic, might be to print the information about the connection pools after
your test client(s) have finished. This may be accomplished as follows:
// get a reference to the BC4J connection pool manager
import oracle.jbo.server.ConnectionPoolManagerFactory;
import oracle.jbo.server.ConnectionPoolManagerImpl;
import oracle.jbo.pool.ResourcePool;
import java.io.PrintWriter;
import java.util.Enumeration;
// get the ConnectionPoolManager. assume that it is an instance of the supplied manager
ConnectionPoolManagerImpl mgr = (ConnectionPoolManagerImpl)ConnectionPoolManagerFactory.getConnectionPoolManager();
Enumeration keys = mgr.getResourcePoolKeys();
PrintWriter pw = new PrintWriter(System.out, true);
while (keys.hasMoreElements())
Object key = keys.nextElement();
ResourcePool pool = (ResourcePool)mgr.getResourcePool(key);
System.out.println("Dumping pool statistics for pool: " + key);
pool.dumpPoolStatistics(pw);
} -
JDBC connection pool getting killed in Managed Server
I am running a managed server in a Windows2000 SP2,WebLogic 6.0 SP2, JDK 1.3.1_01
environment
When I start the managed server I get the following error:
Attempting to create Connection Pool for the Pool Registry Entry : perfectFitPool
<Nov 24, 2001 9:03:15 PM EST> <Error> <JDBC Connection Pool> <The pool 'perfectFitPool
was created successfully. But it must be killed because of: creating Admin MBean
on a managed server>
weblogic.common.ResourceException: creating Admin MBean on a managed server
at weblogic.jdbc.common.internal.ConnectionPool.dynaStartup(ConnectionPool.java:540)
at weblogic.jdbc.common.internal.ConnectionPool.createPool(ConnectionPool.java:766)
at weblogic.jdbc.common.internal.ConnectionPool.createPool(ConnectionPool.java:754)
at ConnectionPoolStartupWl6.createDynamicConnectionPool(ConnectionPoolStartupWl6.java:64)
at ConnectionPoolStartupWl6.startup(ConnectionPoolStartupWl6.java:45)
at weblogic.t3.srvr.StartupClassRunner.invokeStartup(StartupClassRunner.java:112)
at weblogic.t3.srvr.StartupClassRunner.invokeClass(StartupClassRunner.java:93)
at weblogic.t3.srvr.StartupClassRunner.run(StartupClassRunner.java:61)
at java.lang.Thread.run(Thread.java:484)
<Nov 24, 2001 9:03:15 PM EST> <Critical> <WebLogicServer> <Failed to invoke startup
class
"ConnectionPoolStartupWl6", weblogic.common.ResourceException: creating Admin
MBean on a managed server>
<Nov 24, 2001 9:03:15 PM EST> <Notice> <WebLogicServer> <WebLogic Server started>
Any idea on what could be wrong.
Thanks in advance,
Adarsh RonaldHi Adarsh,
You can not create Admin MBean on managed server. Managed server can
have only cached copies of Admin MBeans with type ConfigMBean.
Could you show us what you do @ ConnectionPoolStartupWl6?
Regards,
Slava Imeshev
"Adarsh Ronald" <[email protected]> wrote in message
news:3c0054eb$[email protected]..
>
I am running a managed server in a Windows2000 SP2,WebLogic 6.0 SP2, JDK1.3.1_01
environment
When I start the managed server I get the following error:
Attempting to create Connection Pool for the Pool Registry Entry :perfectFitPool
<Nov 24, 2001 9:03:15 PM EST> <Error> <JDBC Connection Pool> <The pool'perfectFitPool
was created successfully. But it must be killed because of: creating AdminMBean
on a managed server>
weblogic.common.ResourceException: creating Admin MBean on a managedserver
atweblogic.jdbc.common.internal.ConnectionPool.dynaStartup(ConnectionPool.java
:540)
atweblogic.jdbc.common.internal.ConnectionPool.createPool(ConnectionPool.java:
766)
atweblogic.jdbc.common.internal.ConnectionPool.createPool(ConnectionPool.java:
754)
atConnectionPoolStartupWl6.createDynamicConnectionPool(ConnectionPoolStartupWl
6.java:64)
at ConnectionPoolStartupWl6.startup(ConnectionPoolStartupWl6.java:45)
atweblogic.t3.srvr.StartupClassRunner.invokeStartup(StartupClassRunner.java:11
2)
atweblogic.t3.srvr.StartupClassRunner.invokeClass(StartupClassRunner.java:93)
at weblogic.t3.srvr.StartupClassRunner.run(StartupClassRunner.java:61)
at java.lang.Thread.run(Thread.java:484)
<Nov 24, 2001 9:03:15 PM EST> <Critical> <WebLogicServer> <Failed toinvoke startup
class
"ConnectionPoolStartupWl6", weblogic.common.ResourceException: creatingAdmin
MBean on a managed server>
<Nov 24, 2001 9:03:15 PM EST> <Notice> <WebLogicServer> <WebLogic Serverstarted>
>
Any idea on what could be wrong.
Thanks in advance,
Adarsh Ronald -
Weblogic 7.0 , MySQL 3.23 JDBC Connection Pools
i am using weblogic 7.0 and MySQL 3.23 and right now my objective is to create,
configure and test a JDBC
connection pool using the Administrative console.
Here is what i have done till now
- set the classpath of the MySQL driver in the startWLS.cmd like this
SET MYSQL_DRIVER=C:\mysqldriver\mysql-connector-java-2.0.14\mysql-connector-java-2.0.14-bin.jar
set CLASSPATH=%MYSQL_DRIVER%;%CLASSPATH%
- using the weblogic administrative console i have created a new connection pool
named as
testpool.
- Here is what i have in the testpool general tab
Name: testpool
URL: jdbc:mysql//localhost:3306/test (test is the name of the database in mysql)
Driver Classname: org.gjt.mm.mysql.Driver
I have not entered any Properties, ACL Name, Password or Open String Password.
- Now i go the the Testing tab and enter a name of a table in my test database
and click on Apply
and on the command window i am getting the following exception
java.sql.SQLException No suitable driver
Thanks in advance,
AshishThanks a lot Slava. After reading your mail and the post i was able to get it working.
"Slava Imeshev" <[email protected]> wrote:
Hi Ashish,
I figured out what's the problem. URL in the connection pool
definition is malformed. It's
jdbc:mysql//localhost:3306/test
while the correct one should have colon after mysql:
jdbc:mysql://localhost:3306/test
Regards,
Slava Imeshev
"Ashish Sureka" <[email protected]> wrote in message
news:[email protected]...
I am sorry, the program that i posted here is not comming properlyformatted but
i am able to run a simple java program that connects to MySQL and alsoa
servlet
that connects to the MySQL. The only problem i am having is includingthe
MySQL
driver jar files to the weblogic server classpath.
Thanks,
Ashish.
"Ashish Sureka" <[email protected]> wrote:
Hello Joseph Weinstein,
Actually, i already tried the same approach that you have mentioned
in
your reply
before i posted my message here. Following is the program that i use
to check
MySQL connection.
import java.sql.*;
public class MySQLConnect
public static void main(String[] args) throws Exception
try {
Class.forName ( "org.gjt.mm.mysql.Driver" );
System.out.println ( "MySQL Driver Found" );
} catch ( java.lang.ClassNotFoundException e ) {
System.out.println("MySQL JDBC Driver not found ... ");
throw ( e );
String url = "";
Connection con = null;
try {
url = "jdbc:mysql://" + "localhost:3306" + "/" + "test";
con = DriverManager.getConnection(url);
System.out.println("Connection established to " + url + "");
} catch ( java.sql.SQLException e ) {
System.out.println("Connection couldn't be established to " + url);
String sqlStatement = "SELECT * FROM testtable";
try {
Statement s = con.createStatement();
s.execute (sqlStatement);
s.close ( );
} catch ( SQLException e ) {
System.out.println ( "Error executing sql statement" );
con.close();
The classpath that i use to run this program is
SET PATH=C:\bea\jdk131_03\bin
SETCLASSPATH=C:\bea\jdk131_03\jre\lib\rt.jar;C:\bea\weblogic700\ebcc\lib\ext\se
rvlet.jar;C:\CSC413\Demos\HelloApp\HelloAppJAR
SET CLASSPATH=%CLASSPATH%;C:\bea\weblogic700\server\lib\weblogic.jar
SETMYSQL_DRIVER=C:\mysqldriver\mysql-connector-java-2.0.14\mysql-connector-java
-2.0.14-bin.jar
set CLASSPATH=.;%MYSQL_DRIVER%;%CLASSPATH%
I have also written a Servlet which checks the MySQL connection. For
the servlet
i added the MySQL driver jar files in the WEB-INF/lib directory ofthe
servlet
web application and it is working fine.
do you want me to attach the startWLS.cmd file that i changed to include
the MySQL
driver classpath.
Thanks for your replies,
Ashish.
Joseph Weinstein <[email protected]> wrote:
Ashish Sureka wrote:
When i start the weblogic server using the command prompt by executingthe startWLS.cmd,
i can see the classpath the server is using on the command window
and
that includes
the jar file for the MySQL driver but still it is throwing a
SQLException
and
saying that No Suitable driver.
How do i include a external library or jar file on the weblogic
server's
classpath.
is there a specific directory where i should put the MySQL driver
jar
file .
Thanks,
Ashish.No. Let's simplfy the problem. Please run a tiny standalone Java
program
that
just makes a JDBC connection to your MySQL DBMS, with no weblogic
code in the picture. When you succeed at this, show me the CLASSPATH
and
PATH of the shell that ran the program successfully, and show methe
few lines
of code that made the connection. Then we will know the problem.It
may
be that
the URL you're passing to the pool is not exactly correct for that
driver.
Joe
Joseph Weinstein <[email protected]> wrote:
Ashish Sureka wrote:
i am using weblogic 7.0 and MySQL 3.23 and right now my objective
is
to create,
configure and test a JDBC
connection pool using the Administrative console.
Here is what i have done till now
- set the classpath of the MySQL driver in the startWLS.cmd
like
this
SET
MYSQL_DRIVER=C:\mysqldriver\mysql-connector-java-2.0.14\mysql-connector-java
-2.0.14-bin.jar
set CLASSPATH=%MYSQL_DRIVER%;%CLASSPATH%
- using the weblogic administrative console i have created anew
connection
pool
named as
testpool.
- Here is what i have in the testpool general tab
Name: testpool
URL: jdbc:mysql//localhost:3306/test (test is the name of
the
database
in mysql)
Driver Classname: org.gjt.mm.mysql.Driver
I have not entered any Properties, ACL Name, Password or
Open
String
Password.
- Now i go the the Testing tab and enter a name of a table in
my
test
database
and click on Apply
and on the command window i am getting the following exception
java.sql.SQLException No suitable driverWatch the first lines that the server prints out when the script
starts
it. The script
shows the classpath that was constructed for the server. It is
likely
that you need
to do something else to ensure your driver is really in the classpath
the server uses.
Joe
Thanks in advance,
Ashish -
How to use JDBC Connection Pools in a standalone application?
Hi, there,
I have a question about how to use JDBC Connection Pools in an application. I know well about connection pool itself, but I am not quite sure how to keep the pool management object alive all the time to avoid being destroyed by garbage collection.
for example, at the website: http://www.developer.com/java/other/article.php/626291, there is a simple connection pool implementation. there are three classes:JDBCConnection, the application's gateway to the database; JDBCConnectionImpl, the real class/object to provide connection; and JDBCPool, the management class to manage connection pool composed by JDBCConnectionImpl. JDBCPool is designed by Singleton pattern to make sure only one instance. supposing there is only one client to use connection for many times, I guess it's ok because this client first needs instantiate JDBCPool and JDBCConnectionImpl and then will hold the reference to JDBCPool all the time. but how about many clients want to use this JDBCPool? supposing client1 finishes using JDBCPool and quits, then JDBCPool will be destroyed by garbage collection since there is no reference to it, also all the connections of JDBCConnectionImpl in this pool will be destroyed too. that means the next client needs recreate pool and connections! so my question is that if there is a way to keep pool management instance alive all the time to provide connection to any client at any time. I guess maybe I can set the pool management class as daemon thread to solve this problem, but I am not quite sure. besides, there is some other problems about daemon thread, for example, how to make sure there is only one daemon instance? how to quit it gracefully? because once the whole application quits, the daemon thread also quits by force. in that case, all the connections in the pool won't get chance to close.
I know there is another solution by JNDI if we develop servlet application. Tomcat provides an easy way to setup JNDI database pooling source that is available to JSP and Servlet. but how about a standalone application? I mean there is no JNDI service provider. it seems a good solution to combine Commons DBCP with JNID or Apache's Naming (http://jakarta.apache.org/commons/dbcp/index.html). but still, I don't know how to keep pool management instance alive all the time. once we create a JNDI enviroment or naming, if it will save in the memory automatically all the time? or we must implement it as a daemon thread?
any hint will be great apprieciated!
SamTo my knoledge the pool management instance stays alive as long as the pool is alive. What you have to figure out is how to keep a reference to it if you need to later access it.
-
WLS 10.0 JDBC connection pool shrink not working
We seem to be having a problem with jdbc connection pools not shrinking. In the connection pool properties in the WLS console we have:
Initial Capacity 4
Maximum Capacity 15
Shrink Frequency 900
However when I look at the underlying xml config file (see below) the last two values above are not present in the config!
Any ideas what is going on here?
thankyou,
Chris
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns
:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLo
cation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
<name>mdmrDataSource</name>
<jdbc-driver-params>
<url>jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = xxxrac01-vip.nzlxxx01.com) (PORT = 1521))
(ADDRESS = (PROTOCOL = TCP) (HOST = xxxrac02-vip.nzlxxx01.com) (PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA =(SERVE
R = DEDICATED) (SERVICE_NAME = xxxrac.nzlami01.com)))</url>
<driver-name>oracle.jdbc.pool.OracleDataSource</driver-name>
<properties>
<property>
<name>user</name>
<value>xxx_comms</value>
</property>
<property>
<name>fastConnectionFailoverEnabled</name>
<value>true</value>
</property>
<property>
<name>implicitCachingEnabled</name>
<value>true</value>
</property>
<property>
<name>connectionCachingEnabled</name>
<value>true</value>
</property>
<property>
<name>ONSConfiguration</name>
<value>nodes=xxxrac1:6251,xxxrac2:6251</value>
</property>
</properties>
<password-encrypted>xxx</password-encrypted>
</jdbc-driver-params>
<jdbc-connection-pool-params>
<initial-capacity>4</initial-capacity>
<test-connections-on-reserve>true</test-connections-on-reserve>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
</jdbc-connection-pool-params>
<jdbc-data-source-params>
<jndi-name>jdbc/XXXX</jndi-name>
<global-transactions-protocol>None</global-transactions-protocol>
</jdbc-data-source-params>
</jdbc-data-source>You are right that the XML seems to lask those other settings... Did you
sae those settings from the console?
This is what's in one of mine....
<jdbc-connection-pool-params>
<initial-capacity>0</initial-capacity>
<max-capacity>300</max-capacity>
<shrink-frequency-seconds>900</shrink-frequency-seconds> -
ResultSet problem with a jdbc connection pool implementation
Hi
I'm trying to use jdbc connection pool in my java application (js2e 1.4.0_01)
from the example at http://www.developer.com/tech/article.php/626141
In my main() code, in addition to JDBCConnection, JDBCConnectionImpl and JDBCPool classes, i use
JDBCConnection conn;
conn = new JDBCConnection(dbName);
// make a statement
sqlString = "SELECT........."
ResultSet rs = null;
rs = conn.sendRequest(sqlString, rs);
// print result
while (rs.next()) {
Unfortunately i get an error like "ResultSet is closed" in the line corresponding to rs.next. The error disappears if i remove the line
stmt.close();
in the method sendRequest of the JDBCConnectionImpl class.
1) Does anybody knows the solution?
2) How to close all connections?
Thanks you in advance.Hi ,
You are closing the statement and then trying to use resultset , which is not going to work .So close then statment after using resultset .Ideally the code should be like this
try {
conn = // get the connection
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while ( rs.next()){
// do something
catch (Exception ex) {
finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if(conn!=null )
conn.close(); -
Error : A cycle was detected in the classpath of project
Hi, When I build a scheduler program, I get the below error
A cycle was detected in the classpath of project:
Error A cycle was detected in the classpath of project: EPD_APMDM_Dkmsted.com EPD_APMDM_Dkmsted.com
Error A cycle was detected in the classpath of project: EPD_APMDM_DLibWrapted.com EPD_APMDM_DLibWrapted.com
Please help
Thanks
Prabhu.M...The issue has been resolved.
I was referring the jar files in 2 places , one in Wrapper and another in Portal DC.
I removed the reference from Wrapper and issue got resolved
Thanks -
A port conflict was detected in the server configuration
Hi
Iam getting following error message "A port conflict was detected in the server configuration" error when I run startWeblogic.sh. I checked same in config.sh file about repeatation of port for channel sip but it is not repeated. Please help me out
I have run nodemanager successfully on 5556 port but I have admin server starting problem I tried both $DOMIAN_HOME/startWeblogi.sh and $DOMAIN_HOME/bin/startWeblogic.sh location and I am getting same issue.
Error message:
####<May 4, 2011 10:43:23 AM IST> <Info> <WebLogicServer> <HSCHARTOMR0112> <> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1304486003957> <BEA-000000> <WebLogic Server "AdminServer" version:
WebLogic Server 10.3.4.0 Fri Dec 17 20:47:33 PST 2010 1384255 Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved.>
####<May 4, 2011 10:43:24 AM IST> <Notice> <Log Management> <HSCHARTOMR0112> <> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1304486004002> <BEA-170019> <The server log file /u01/BEA/MW_HOME/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log is opened. All server side log events will be written to this file.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Log Management> <HSCHARTOMR0112> <> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1304486004005> <BEA-170023> <The Server Logging is initialized with Java Logging API implementation.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Diagnostics> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004044> <BEA-320001> <The ServerDebug service initialized successfully.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004141> <BEA-002622> <The protocol "t3" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004141> <BEA-002622> <The protocol "t3s" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004141> <BEA-002622> <The protocol "http" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004142> <BEA-002622> <The protocol "https" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004142> <BEA-002622> <The protocol "iiop" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004143> <BEA-002622> <The protocol "iiops" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004144> <BEA-002622> <The protocol "ldap" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004144> <BEA-002622> <The protocol "ldaps" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004147> <BEA-002622> <The protocol "cluster" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004148> <BEA-002622> <The protocol "clusters" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004152> <BEA-002622> <The protocol "snmp" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004152> <BEA-002622> <The protocol "admin" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004153> <BEA-002624> <The administration protocol is "t3s" and is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004157> <BEA-002622> <The protocol "sip" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004158> <BEA-002622> <The protocol "sips" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004159> <BEA-002622> <The protocol "sips-admin" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004164> <BEA-002622> <The protocol "diameter" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004165> <BEA-002622> <The protocol "diameters" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Info> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004166> <BEA-002622> <The protocol "diameter-sctp" is now configured.>
####<May 4, 2011 10:43:24 AM IST> <Emergency> <Server> <HSCHARTOMR0112> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1304486004185> <BEA-002633> <A port conflict was detected in the server configuration. The server is configured to listen on two ports that have the same port number and IP address. Channel "sip" address "sip://fe80:0:0:0:fcff:ffff:feff:ffff:5006" conflicts with channel "sip" address "sip://fe80:0:0:0:fcff:ffff:feff:ffff:5006".>
####<May 4, 2011 10:43:24 AM IST> <Critical> <WebLogicServer> <HSCHARTOMR0112> <AdminServer> <main> <<WLS Kernel>> <> <> <1304486004186> <BEA-000362> <Server failed. Reason: Network configuration error, check log for details.>
####<May 4, 2011 10:43:24 AM IST> <Notice> <WebLogicServer> <HSCHARTOMR0112> <AdminServer> <main> <<WLS Kernel>> <> <> <1304486004281> <BEA-000365> <Server state changed to FAILED>
####<May 4, 2011 10:43:24 AM IST> <Error> <WebLogicServer> <HSCHARTOMR0112> <AdminServer> <main> <<WLS Kernel>> <> <> <1304486004281> <BEA-000383> <A critical service failed. The server will shut itself down>
####<May 4, 2011 10:43:24 AM IST> <Notice> <WebLogicServer> <HSCHARTOMR0112> <AdminServer> <main> <<WLS Kernel>> <> <> <1304486004283> <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN>
####<May 4, 2011 10:43:24 AM IST> <Info> <WebLogicServer> <HSCHARTOMR0112> <AdminServer> <main> <<WLS Kernel>> <> <> <1304486004283> <BEA-000236> <Stopping execute threads.>
Thanks,
Phani
Edited by: Phani on 3 May, 2011 10:28 PM
Edited by: Phani on 4 May, 2011 1:25 AM
Edited by: Phani on 4 May, 2011 3:03 AMRefer:- wlcs_server1 won't start - sipchannel port conflict
-Akshay -
Cycle was detected in the build path of project
Hi
I was trying to create a Test application for MDB.
Here from the webContent I call the service locator in the EJB folder and get the bean object. Using the object I need to put a message in the MQ.
The onMessage method<present under EJB folder> picks up the message<which is a key> and then it has to refer the value in the Map which is under the ../WebContent/Javasource/..
But when I try to complile the project it is giving a error stating that A cycle was detected in the build path of project: MDBTestEJB.
How do I solve this ?? Please help ?The fix for this - regardless of IDE - is to use a
bit of common sense, and good old-fashioned logic
(remember that?). You've obviously got (at least) 2
things that are dependent on each other, which - if
you remember the Chicken and Egg problem* - can't
possibly work. Work it out for yourself, you're
writing software, after all. If A needs B to do some
work but can't because B needs A first, you've got
problems
* sensible "it was the egg. Something
not-quite-like-a-chicken-but-close mated with
something-else-not-quite-like-a-chicken, and produced
an egg that eventually hatched into a chicken"
notwithstandingOK georgemc, I allowed you to motivate me to look for a better fix. I think I came up with a solution but I'd like to see if you, or anyone else, agrees with it.
First let me say that I'm using a persistence layer, which I've never done before, and with cardinality annotations different classes need to reference each other cyclically.
My problem was that I had class A in project 1 that depended on class B in project 2, but class B (project 2) also depended on class A (project 1). This meant that I had project 2 on the project 1 build path and vice versa; which is why I was getting the error.
After your post I started to think about it and it seems that my original solution didn't do a very good job of utilizing the extensibility that Java's OO gives us. My new solution is to remove any reference of class A that is in class B and also remove project 1 from the project 2 build path. Then extend class B into class ChildOf_B in project 1 and insert the references to class A in the new child class. I of course keep project 2 on the project 1 build path.
I've since told eclipse to throw an error for build path cycles instead of a warning and I no longer have any problems.
Maybe you are looking for
-
Data not matching for a key figure in ODS and In CUBE.
There is one key figure ( Net Units) where in the data is not matching in ODS and in CUBE for only one particular fiscal week (200714)but for the rest of the weeks its matching. The data is first loaded in to ODS and from there in to CUBE and the s
-
NW 7.3: (A)SCS/SCS/ERS - use the same IP
Hi, evaluation tests with SAP NW 7.3 show that the instances of (A)SCS and ERS just using the same IP (in previous release ASCS and SCS have their own IP; depending on the releases ERS request an IP or not for installation procedure). In a single hos
-
ALV grid disply with edit columns in output
Hi all, i am using CALL METHOD MY_GRID->SET_TABLE_FOR_FIRST_DISPLAY to display the output in alv format.there is 3 edit columns in output display. if i fill one field & then put 'ENTER' then other two fields of that row should be filled with
-
Hi All, Am Developing WP8.1 App. I need to write few files in Pictures library, I gave permission in Capabilities. But still am getting access Denied Error. If i try to write the same file in local folder i can write without any error. Am Using Below
-
Can't open PSE 9 because of Win32
I have downloaded PSE9 onto my Mac but am unable to open it because my mac does not have Win32. How/Where can i get Win 32???