|Exam Name||:||Sun Certified MySQL 5.0 Database(R) Administrator Part II|
|Questions and Answers||:||138 Q & A|
|Updated On||:||February 15, 2019|
|PDF Download Mirror||:||Pass4sure 310-811 Dump|
|Get Full Version||:||Pass4sure 310-811 Full Version|
310-811 exam Dumps Source : Sun Certified MySQL 5.0 Database(R) Administrator Part II
Test Code : 310-811
Test Name : Sun Certified MySQL 5.0 Database(R) Administrator Part II
Vendor Name : SUN
Q&A : 138 Real Questions
I want today's dumps present day 310-811 exam.
killexams.com gave me an wonderful education tool. I used it for my 310-811 exam and had been given a most score. I surely just like the way killexams.com does their exam training. Basically, that may be a sell off, so that you get questions which may be used at the real 310-811 exams. But the trying out engine and the exercise exam format help you memorize all of it very well, so you become studying subjects, and may be able to draw upon this information in the destiny. Terrific pleasant, and the finding out engine is very mild and consumer quality. I didnt come upon any troubles, so this is tremendous cost for cash.
What study guide do I need to pass 310-811 exam?
I in reality thanks. i have cleared the 310-811 exam with the assist of your mock exams. It changed into very a lot beneficial. I absolutely would endorse to people who are going to appear the 310-811.
Right place to find 310-811 Latest dumps paper.
This exam training package deal has mounted itself to be surely honestly worth the cash as I passed the 310-811 examin enhance this week with the score of 90 4%. All questions are valid, thats what they arrive up with on the exam! I dont recognize how killexams.com does it, but they have been keeping this up for years. My cousin used them for a few different IT exam years inside the past and says they had been simply as particular again in the day. Very reliable and honest.
Dont neglect to strive those actual test questions questions for 310-811 exam.
killexams.com is an correct indicator for a college students and customers functionality to work and test for the 310-811 exam. its far an correct indication in their ability, particularly with tests taken quickly earlier than starting off their academic test for the 310-811 exam. killexams.com gives a dependable updated. The 310-811 tests deliver a thorough photo of candidates capability and capabilities.
Take those 310-811 questions and answers in advance than you visit holidays for take a look at prep.
by means of enrolling me for killexams.com is an opportunity to get myself cleared in 310-811 exam. Its a chance to get myself thru the hard questions of 310-811 exam. If I couldnt have the risk to enroll in this website i might have now not been able to clear 310-811 exam. It became a glancing opportunity for me that I were given success in it so without difficulty and made myself so cozy joining this website. After failing on this exam i used to be shattered after which i discovered this web site that made my way very smooth.
It is really great to have 310-811 real test Question bank.
I should admit, choosing killexams.com become the subsequent smart decision I took after deciding on the 310-811 exam. The styles and questions are so rightly unfold which lets in person enhance their bar by the time they attain the closing simulation exam. Appreciate the efforts and honest thanks for supporting pass the exam. Keep up the good work. Thanks killexams.
No source is greater proper than this 310-811 source.
The usual of killexams.com is excessive sufficient to assist the candidates in 310-811 exam training. All the goods that I had used for 310-811 exam training were of the first rate great in order that they assisted me to smooth the 310-811 exam rapidly.
310-811 examination prep got to be this smooth.
This exam schooling kit has established itself to be surely well well worth the coins as I passed the 310-811 exam earlier this week with the score of ninety 4%. All questions are valid, this is what they offer you with on the exam! I dont apprehend how killexams.com does it, however they have been keeping this up for years. My cousin used them for every other IT exam years in the past and says they had been simply as right again within the day. Very reliable and sincere.
determined most 310-811 Questions in actual test questions that I organized.
The killexams.com killexams.com are the top notch product as its miles each easy to apply and easy to put together thrutheir high-quality Dumps. in many methods it motivated me, its far the tool which I used each day for my learning. The manual is suited for the preparing. It helped me to perform a great score within the very last 310-811 exam. It offers the expertise to carry out better inside the exam. thanks very for the extraordinary assist.
real test questions modern day 310-811 examination are available now.
im very lots happy together with your test papers specially with the solved issues. Your test papers gave me courage to appear in the 310-811 paper with self belief. The result is seventy seven.25%. all over again I entire heartedly thank the killexams.com organization. No different way to pass the 310-811 exam other than killexams.com model papers. I personally cleared different test with the assist of killexams.com questions bank. I endorse it to each one. in case you need to skip the 310-811 exam then take killexams.com assist.
Attendees on the open source database's annual developers' conference in Santa Clara this morning are waking up to the awesome information that their personal product, whose price to sun Microsystems was to were lauded by way of none apart from solar co-founder Andreas von Bechtolsheim in a keynote tackle scheduled for Thursday, is now owned through Oracle techniques.
The initial value of MySQL to Oracle -- up except this morning, its greatest competitor -- was evident by means of its absence from this morning's joint press conference featuring solar and Oracle executives. solar CEO Jonathan Schwartz mentioned MySQL together with OpenOffice as a part of what he now calls the realm's biggest corporation for open source application. unless Oracle's SEC filings are made public, we may not know even if MySQL even factored into its valuation of sun.
LinuxQuestions.org editor Jeremy had, smartly, Linux questions this morning after the information became announced: "With lots of sun's profits coming from hardware, will [Oracle] spin that division off or use it to center of attention more on a complete Oracle stack, that contains every little thing from hardware to database?" Jeremy wrote. "moving to the individual materials of that stack, will Oracle proceed with the SPARC CPU line or be drawn to the extra commodity x86 lines? at the OS level, will Oracle continue to center of attention on Linux and their Unbreakable implementation or will they attempt to hold Solaris alive? Oracle has been contributing to Linux in a big way lately, and it could be an important loss for that to head away."
independent analyst and Betanews contributor Carmi Levy believes the deal could allow some intriguing opportunities for Oracle, which in past times has had greater issue breaking into the lower end of the database market. There, MySQL rules amongst open source users, and Microsoft SQL Server has had a stronghold among the many commercial set.
"This thinking extends into the lower end of the market as neatly, given how the sun acquisition offers Oracle entry to MySQL," Levy advised Betanews. "whereas no person may ever rightfully declare that MySQL threatens Oracle's greater-conclusion database choices, its addition to the portfolio gives Oracle extra leverage in a market with big increase competencies. The MySQL put in base of about 11 million offers Oracle earnings groups fertile possibility to have conversations they have not previously had."
but MySQL's help base is comprised in massive part via unbiased builders, and that is the reason with the aid of design. Already, these impartial developers are waking as much as a brand new world, including utility engineer Ryan Thiessen. An eleven-yr MySQL veteran, Thiessen is scheduled to communicate at the MySQL convention this week; and in a blog post this morning entitled comfortably, "shocked," he exhibits his bewilderment:
"remaining time this yr i was cautiously optimistic about sun's buy of MySQL. however now not this year -- or not it's worry and disappointment over what this capability for MySQL," Thiessen wrote. "when I examine this as a rumor just a few weeks ago i believed it turned into a funny story of an idea. Why would a high margin utility business want to purchase a declining hardware company, although that hardware is top notch? As for his or her software, I can not imagine that Oracle is drawn to Java, MySQL, and so on as earnings producing products, it would simply be a tiny blip for them."fairly, Java and Solaris had been mentioned by means of Oracle CEO Larry Ellison because the key motivating components, no longer the SPARC company -- definitely, it was SPARC that didn't generate a blip. MySQL obtained as a minimum that an awful lot -- this for a business that became price at least a billion to solar just 15 months in the past.
MySQL's founders have remained on the list as fiercely against the use of software patents, as dangerous to the spirit and ethics of open source. Oracle isn't diametrically opposed to that line of thinking, having made statements in principle all the way through this decade opposing the advent of patent portfolios for predatory purposes.
Oracle's 2000 commentary on the problem, which is basically unchanged, reads, "Patent legislation offers to inventors an exclusive correct to new technology in return for booklet of the know-how. here's not applicable for industries reminiscent of utility development by which innovations happen abruptly, will also be made without a substantial capital funding, and tend to be inventive combinations of prior to now-conventional recommendations."
however Oracle does guide the use of patents for protecting functions, particularly when a corporation is attacked by using an organization with a huge portfolio.That reality by myself does not suggest Oracle can not, or hasn't, used its application property very aggressively. In October 2005, the business received its first wide-spread open supply database element: Innobase, whose InnoDB contained business-type elements that had been in reality rolled into MySQL 5.0. by using acquiring InnoDB, Oracle ended up owning part of MySQL anyway, in a movement that InfoWorld's Neil McAlister astutely reasoned may be to hold the lessen-category database snugly within the lower classification, while siphoning purchasers into Oracle's upper class.
"it is why when Oracle snapped up Innobase in early October it turned into effortless to interpret the movement as a tremendous offensive on Oracle's half," McAlister wrote then. "by means of taking control of one of MySQL's essential interior organs, Oracle features the power to crush the upstart at a whim, effectively by means of closing its grip round Innobase. but, severely, why would Oracle try this?"
4 years later, we have a more in-depth glimpse of a solution to McAlister's query: by means of taking handle of the geography of enterprise databases over a bigger area, Oracle maintains MySQL safely inside its own continent, both locked away or funneling new purchasers throughout the channel. probably no person could ever rightly claim that MySQL turned into a genuine chance, but these days, Oracle's movement ensures that it never can also be. and that's the new world that developers in Santa Clara are waking up to.
At OSCON in 2006, I followed classes that discussed how open source groups would fare when big corporations are available in. returned then there were only a handful of examples of big agencies purchasing small open source businesses. Three years later, we’ve witnessed MySQL AB get swallowed by means of solar, simplest to have sun be swallowed via Oracle. Now there are more open questions than ever and at least three versions of MySQL which are jockeying to proceed the MySQL blood-line. the day prior to this I attended talks with the aid of two of these organizations and i ought to wonder how the MySQL game will play itself out over time.
the primary talk I attended changed into: “Drizzle: status, principles, and Ecosystem” where a few Drizzle builders shared their options about this project. Brian Aker forked MySQL to create Drizzle a yr ago with the premise to create a brand new database that become leaner and extra extensible through the use of a micro kernel and plugin model. The current MySQL codebase had grown overly advanced after a couple of elements have been “hacked in” which made adding greater facets overly problematic.
The drizzle group, which has a number of builders sponsored with the aid of sun, seems very tons concerned in regards to the technical nature of their assignment. As in most open supply tasks the developers look less worried with politics and groups and more with creating a kick-ass database. i attempted to ask just a few inquiries to see the place they suppose that MySQL, Drizzle and MariaDB were headed, but largely the questions were no longer answered — they reiterated the focus on technical excellence. aside from having severe company support, Drizzle seems to be pushed with the aid of basic open supply principles. This makes me satisfied, since the way forward for both MySQL and Drizzle are uncertain seeing that Oracle simply purchased solar. Given the center of attention on open supply ideas, I’m definite the Drizzle would now not go away should still Oracle decide to cease helping the crew.
The 2nd session was: “MariaDB: community pushed SQL Server” which presented Monty’s (of MySQL AB reputation) new enterprise Monty program AB. in contrast to the Drizzle community, Monty’s new enterprise has clear corporate goals, finished with fluff and advertising and marketing communicate. the new business’s fork of MySQL, MariaDB, goals to be 100% suitable with the customary MySQL. Its designed to be a hundred% drop in replacement that goes even as far as letting people who are certified on MySQL practice their skills to MariaDB. even though Monty program AB differs in a number of aspects from the customary MySQL AB, it in fact looks to observe a reasonably equivalent model.
The people engaged on the normal MySQL had been now not too smartly represented right here at OSCON. not like Drizzle and MariaDB, MySQL is shrouded in uncertainty on the grounds that no person know what Oracle plans to do with MySQL. since it MySQL can cannibalize (and doubtless already has) Oracle’s flagship product, the way forward for MySQL is terribly unclear. The mindshare at OSCON naturally belongs to MariaDB and to Drizzle.
Returning returned to my customary factor now, we are able to see that the acquisition of MySQL AB by using sun hasn’t worked out in any respect how each person had hoped. many of the fears raised via my weblog publish from 3 years in the past have manifested during this mess. After MySQL became a sun property, the first-rate of MySQL began to endure, together with releasing a edition of MySQL that had serious primary bugs. This had not ever came about before and despatched a clear sign that not all become neatly with MySQL. And the neighborhood had lots of frustrations with sun as sun slowed or stopped accepting patches. Even vital agencies like Google had critical patches to MySQL unnoticed. naturally the technique had damaged down.
these days we locate ourselves with as a minimum three models of MySQL that all have differing dreams, yet promise to share code with one an additional. Some might be appropriate with each other, some smash new floor. The one component we comprehend for definite that nothing in this online game is certain. unless Oracle makes a press release in regards to the future of MySQL nothing can be clear.
I find it basically wonderful that each Drizzle and MariaDB have back MySQL to fundamental open supply roots. Neither neighborhood goes to require fancy licenses or copyright agreements and will completely count on the use of the GPL. Drizzle is devoid of a industrial mannequin for the time being and even Monty software AB will seem like a extra “traditional” open source business.
Amidst this uncertainty the only factor that is apparent to me is that the MariaDB and the Drizzle communities are not watching for the rest — they're working on new enhancing their tasks as quick as they could. I for my part feel that Drizzle presents probably the most enjoyable approach to saving MySQL — it sounds like the codebase necessary a significant overhaul so as to damage some construction bottlenecks and to enable more people to return and participate within the building manner.
even though I’ve switched to Postgres many moons in the past, I’m utterly concerned with what's at present occurring with MySQL. The present routine in this space are issues that we discussed three years ago with the conclusion of “This can be wonderful to watch!” indeed, it’s entertaining to watch — I consider we’ll be speakme about this situation for fairly some time to come back. Oh, and MySQL clients: be anxious not — you’re going to be the winners in this whole debacle!
Duke at Baylor: Blue Devils 26-21. prime possibility for the Bears. Duke is taking part in devoid of quarterback Daniel Jones.
Rutgers at Kansas: Scarlet Knights 24-20. massive 12 upset special. KU is by hook or by crook preferred. That’s right. Kansas is preferred.
Texas-San Antonio at Kansas State: Wildcats 27-17. Oh my goodness, ok-State isn’t very respectable. What on the planet has came about to the ‘Cats?
LSU at Auburn: conflict Eagle 26-7. Of Auburn’s five toughest games – additionally including Washington, Mississippi State, Georgia and Alabama – handiest this one is at home.
Alabama at Ole leave out: Crimson Tide 35-11. There turned into a time when this was the South’s optimal rivalry. not the Iron Bowl. now not Bama-Tennessee. no longer Georgia-Florida. This.
Vanderbilt at Notre Dame: combating Irish 27-16. Is Vandy competitive? We’ll find out.
Missouri at Purdue: Tigers 35-26. The Boilermakers had been thought to be ascending. Then they lost at domestic to Northwestern, forgivable but avoidable, after which lost at domestic to jap Michigan. Unforgivable. Now Purdue is a significant underdog at home to Mizzou, with Boston school coming to West Lafayette subsequent week. might the Boilermakers go 0-4 to beginning the year with four home losses?
Colorado State at Florida: Gators 34-14. Florida employed away Colorado State train Jim McElwain after the 2014, however came at a price. Florida agreed to pay CSU $500,000 for six years, through 2020. McElwain agreed to pay $333,333 a 12 months for a similar six years. Plus Florida agreed to host Colorado State in a ballgame, this one, for a $2 million assure. The Rams have stumbled upon probably the most top notch money-making schemes in historical past. hire an up-and-coming instruct, give him whatever thing he wants but encompass a huge buyout in his contract. by way of the end of 2020, the Rams will had been paid $7 million by way of Florida to play one game and not have McElwain train them. And here’s the funny component. McElwain’s no longer even the Florida teach anymore; he became fired closing November with a 22-12 typical listing. ESPN pronounced that McElwain had been an “bizarre fit” from the beginning. here’s the funnier issue. It’s now not for certain that Florida will even win this online game. The Gators lost at domestic to Kentucky ultimate week, ending a 31-game series successful streak, and Colorado State beat Arkansas.
Obviously it is hard assignment to pick solid certification questions/answers assets concerning review, reputation and validity since individuals get sham because of picking incorrectly benefit. Killexams.com ensure to serve its customers best to its assets concerning exam dumps update and validity. The vast majority of other's sham report objection customers come to us for the brain dumps and pass their exams cheerfully and effectively. We never trade off on our review, reputation and quality because killexams review, killexams reputation and killexams customer certainty is vital to us. Uniquely we deal with killexams.com review, killexams.com reputation, killexams.com sham report grievance, killexams.com trust, killexams.com validity, killexams.com report and killexams.com scam. In the event that you see any false report posted by our rivals with the name killexams sham report grievance web, killexams.com sham report, killexams.com scam, killexams.com dissension or something like this, simply remember there are constantly terrible individuals harming reputation of good administrations because of their advantages. There are a great many fulfilled clients that pass their exams utilizing killexams.com brain dumps, killexams PDF questions, killexams hone questions, killexams exam simulator. Visit Killexams.com, our specimen questions and test brain dumps, our exam simulator and you will realize that killexams.com is the best brain dumps site.
700-038 practice questions | 500-701 cram | 000-998 pdf download | 9A0-040 brain dumps | 700-703 free pdf | C2180-271 exam prep | 190-612 dump | 000-M221 practice test | C9520-420 free pdf | JN0-410 sample test | C2180-401 braindumps | HP2-Z12 questions answers | 000-645 brain dumps | 000-387 Practice Test | 1Y0-800 questions and answers | 2VB-601 study guide | 98-368 braindumps | A2010-564 real questions | CTEL exam questions | 9A0-311 study guide |
Just study these 310-811 Questions and study guide
Are you looking for SUN 310-811 Dumps of real questions for the Sun Certified MySQL 5.0 Database(R) Administrator Part II Exam prep? We provide most updated and quality 310-811 Dumps. Detail is at http://killexams.com/pass4sure/exam-detail/310-811. We have compiled a database of 310-811 Dumps from actual exams in order to let you prepare and pass 310-811 exam on the first attempt. Just memorize our Q&A and relax. You will pass the exam.
We have Tested and Approved 310-811 Exams. killexams.com gives the most actual and most recent IT exam materials which practically contain all information focuses. With the guide of our 310-811 exam materials, you dont have to squander your opportunity on perusing greater part of reference books and simply need to burn through 10-20 hours to ace our 310-811 real questions and answers. Whats more, we furnish you with PDF Version and Software Version exam questions and answers. For Software Version materials, Its offered to give the applicants mimic the SUN 310-811 exam in a real situation.
killexams.com Huge Discount Coupons and Promo Codes are as under;
WC2017 : 60% Discount Coupon for all exams on website
PROF17 : 10% Discount Coupon for Orders greater than $69
DEAL17 : 15% Discount Coupon for Orders greater than $99
DECSPECIAL : 10% Special Discount Coupon for All Orders
At killexams.com, we provide thoroughly reviewed SUN 310-811 schooling resources which can be the best for Passing 310-811 test, and to get licensed via SUN. It is a great preference to accelerate your career as a professional in the Information Technology enterprise. We are happy with our reputation of supporting people pass the 310-811 exam of their very first attempts. Our success prices in the past years had been actually dazzling, thanks to our glad clients who are now able to boost their career within the speedy lane. killexams.com is the primary choice among IT professionals, specifically those who are seeking to climb up the hierarchy ranges faster in their respective corporations. SUN is the enterprise leader in records generation, and getting certified by them is a guaranteed way to prevail with IT careers. We help you do exactly that with our excessive pleasant SUN 310-811 schooling materials.
SUN 310-811 is omnipresent all around the world, and the commercial enterprise and software solutions provided by using them are being embraced by way of nearly all of the organizations. They have helped in driving lots of agencies on the sure-shot route of pass. Comprehensive information of SUN products are taken into prepation a completely crucial qualification, and the experts certified by way of them are quite valued in all organizations.
We offer real 310-811 pdf exam questions and answers braindumps in formats. Download PDF & Practice Tests. Pass SUN 310-811 e-book Exam quickly & easily. The 310-811 braindumps PDF type is to be had for reading and printing. You can print greater and exercise normally. Our pass rate is high to 98.9% and the similarity percent between our 310-811 syllabus study manual and actual exam is 90% based totally on our seven-yr educating experience. Do you want achievements inside the 310-811 exam in just one try? I am currently analyzing for the SUN 310-811 real exam.
Cause all that matters here is passing the 310-811 - Sun Certified MySQL 5.0 Database(R) Administrator Part II exam. As all which you need is a high score of SUN 310-811 exam. The most effective one aspect you need to do is downloading braindumps of 310-811 exam exam courses now. We will no longer will let you down with our money-back assure. The experts additionally preserve tempo with the maximum up to date exam so that you can present with the most people of updated materials. Three months loose get entry to as a way to them thru the date of buy. Every candidates may also afford the 310-811 exam dumps thru killexams.com at a low price. Often there may be a reduction for all people all.
In the presence of the authentic exam content of the brain dumps at killexams.com you may easily expand your niche. For the IT professionals, it's far crucial to modify their skills consistent with their profession requirement. We make it smooth for our customers to take certification exam with the help of killexams.com proven and genuine exam material. For a brilliant future in the world of IT, our brain dumps are the high-quality choice.
killexams.com Huge Discount Coupons and Promo Codes are as beneath;
WC2017 : 60% Discount Coupon for all exams on internet site
PROF17 : 10% Discount Coupon for Orders greater than $69
DEAL17 : 15% Discount Coupon for Orders more than $99
DECSPECIAL : 10% Special Discount Coupon for All Orders
A top dumps writing is a totally vital feature that makes it easy a good way to take SUN certifications. But 310-811 braindumps PDF gives convenience for candidates. The IT certification is quite a difficult assignment if one does now not locate right guidance within the form of genuine useful resource material. Thus, we've true and up to date content material for the education of certification exam.
Killexams 156-215.65 study guide | Killexams CEMAP-1 practice test | Killexams HP0-753 bootcamp | Killexams 000-M49 cheat sheets | Killexams HP2-N44 free pdf | Killexams HP2-B82 braindumps | Killexams E20-329 braindumps | Killexams 156-515 practice questions | Killexams 000-879 free pdf download | Killexams 000-959 study guide | Killexams 00M-245 practice exam | Killexams HP0-S15 braindumps | Killexams 310-540 study guide | Killexams 050-SEPROGRC-01 VCE | Killexams CGRN pdf download | Killexams C9020-970 test prep | Killexams C9550-412 dumps | Killexams 700-901 practice test | Killexams ST0-130 questions answers | Killexams 000-S02 exam prep |
Killexams P2140-022 test questions | Killexams 210-451 exam questions | Killexams 190-849 study guide | Killexams EX0-115 practice test | Killexams C8010-240 real questions | Killexams P9050-005 sample test | Killexams 62-193 test prep | Killexams HH0-240 braindumps | Killexams MAYA11-A braindumps | Killexams 70-735 practice questions | Killexams 9A0-331 exam prep | Killexams 000-597 Practice Test | Killexams CCA-332 questions answers | Killexams CCD-470 cram | Killexams 7241X free pdf | Killexams CCN questions and answers | Killexams 70-569-VB VCE | Killexams A2180-188 real questions | Killexams 2V0-651 dumps questions | Killexams NSE4-5-4 practice questions |
The Java Database Connectivity (JDBC) API is used to access a SQL database from a Java application. JDBC also supports tabular data sources, such as a spreadsheet.
Oracle JDeveloper is a free Integrated Development Environment (IDE) for modeling, developing, debugging, optimizing, and deploying Java applications. JDeveloper 10g is used to develop J2EE applications comprising the JSPs, EJBs, struts, servlets, and Java classes that may require accessing a database table in an Oracle 10g Database or a third-party database. In this extract from the book JDBC 4.0 and Oracle JDeveloper for J2EE Development (Packt Publishing), we will see how to configure JDBC in the JDeveloper IDE.
Unlike the Eclipse IDE, which requires a plug-in, JDeveloper has a built-in provision to establish a JDBC connection with a database. JDeveloper is the only Java IDE with an embedded application server, Oracle Containers for J2EE (OC4J) or WebLogic Server in JDeveloper 11g. Thus a database-based Web application may run in JDeveloper without a third-party application server. However, JDeveloper also supports third-party application servers. Starting with JDeveloper 11, application developers can point the IDE to an application server instance, including third-party application servers, that you want to use for testing during development. JDeveloper provides connection pooling for the efficient use of database connections. A database connection may be used in an ADF BC (Business Components) application or in a Java EE application.
A database connection in JDeveloper may be configured in the Connections Navigator. A Connections Navigator connection is available as a DataSource registered with a JNDI naming service. The database connection in JDeveloper is a reusable named connection that developers configure once and then use in as many of their projects as they want. Depending on the nature of the project and the database connection, the connection is configured in the bc4j.xcfg file or a Java EE data source. Here, it is necessary to distinguish between data source and DataSource. A data source is a source of data; for example, an RDBMS database is a data source. A DataSource is an interface that represents a factory for JDBC Connection objects.
JDeveloper uses the term Data Source or data source to refer to a factory for connections. We will also use the term Data Source or data source to refer to a factory for connections, which in the javax.sql package is represented by the DataSource interface. A DataSource object may be created from a data source registered with the JNDI (Java Naming and Directory) naming service using JNDI lookup. A JDBC Connection object may be obtained from a DataSource object using the getConnection method. As an alternative to configuring a connection in the Connections Navigator, a data source may also be specified directly in the data source configuration file data-sources.xml.
In this article we will discuss the procedure to configure a JDBC connection and a JDBC data source in JDeveloper 10g IDE. We will use the MySQL 5.0 database server and MySQL Connector/J 5.1 JDBC driver, which support the JDBC 4.0 specification. In this article you will learn the following:
Before we create a JDBC connection and a data source we will discuss connection pooling and DataSource.
Connection Pooling and DataSourceThe javax.sql package provides the API for server-side database access. The main interfaces in the javax.sql package are DataSource, ConnectionPoolDataSource, and PooledConnection. The DataSource interface represents a factory for connections to a database. DataSource is a preferred method of obtaining a JDBC connection. An object that implements the DataSource interface is typically registered with a Java Naming and Directory API-based naming service. DataSource interface implementation is driver-vendor specific. The DataSource interface has three types of implementations:
An advantage to using a data source is that code accessing a data source does not have to be modified when an application is migrated to a different application server. Only the data source properties need to be modified. A JDBC driver that is accessed with a DataSource does not register itself with a DriverManager. A DataSource object is created using a JNDI lookup and subsequently a Connection object is created from the DataSource object. For example, if a data source JNDI name is jdbc/OracleDS, a DataSource object may be created using JNDI lookup. First, create an InitialContext object and subsequently create a DataSource object using the InitialContext lookup method. From the DataSource object create a Connection object using the getConnection() method:
InitialContext ctx=new InitialContext();DataSource ds=ctx.lookup("jdbc/OracleDS");Connection conn=ds.getConnection();
The JNDI naming service, which we used to create a DataSource object, is provided by J2EE application servers such as the Oracle Application Server Containers for J2EE (OC4J) embedded in the JDeveloper IDE.
A connection in a pool of connections is represented by the PooledConnection interface, not the Connection interface. The connection pool manager, typically the application server, maintains a pool of PooledConnection objects. When an application requests a connection using the DataSource.getConnection() method, as we did using the jdbc/OracleDS data source example, the connection pool manager returns a Connection object, which is actually a handle to an object that implements the PooledConnection interface.
A ConnectionPoolDataSource object, which is typically registered with a JNDI naming service, represents a collection of PooledConnection objects. The JDBC driver provides an implementation of the ConnectionPoolDataSource, which is used by the application server to build and manage a connection pool. When an application requests a connection, if a suitable PooledConnection object is available in the connection pool, the connection pool manager returns a handle to the PooledConnection object as a Connection object. If a suitable PooledConnection object is not available, the connection pool manager invokes the getPooledConnection() method of the ConnectionPoolDataSource to create a new PooledConnection object. For example, if connectionPoolDataSource is a ConnectionPoolDataSource object, a new PooledConnection gets created as follows:
The application does not have to invoke the getPooledConnection() method though; the connection pool manager invokes the getPooledConnection() method and the JDBC driver implementing the ConnectionPoolDataSource creates a new PooledConnection and returns a handle to it. The connection pool manager returns a Connection object, which is a handle to a PooledConnection object, to the application requesting a connection. When an application closes a Connection object using the close() method, as follows, the connection does not actually get closed.
The connection handle gets deactivated when an application closes a Connection object with the close() method. The connection pool manager does the deactivation. When an application closes a Connection object with the close() method, any client info properties that were set using the setClientInfo method are cleared.
The connection pool manager is registered with a PooledConnection object using the addConnectionEventListener() method. When a connection is closed, the connection pool manager is notified and the connection pool manager deactivates the handle to the PooledConnection object and returns the PooledConnection object to the connection pool to be used by another application.
The connection pool manager is also notified if a connection has an error. A PooledConnection object is not closed until the connection pool is being reinitialized, the server is shutdown, or a connection becomes unusable.
In addition to connections being pooled, PreparedStatement objects are also pooled by default if the database supports statement pooling. It can be discovered if a database supports statement pooling using the supportsStatementPooling() method of the DatabaseMetaData interface. The PreparedStatement pooling is also managed by the connection pool manager. To be notified of PreparedStatement events such as a PreparedStatement getting closed or a PreparedStatement becoming unusable, a connection pool manager is registered with a PooledConnection manager using the addStatementEventListener() method. A connection pool manager deregisters a PooledConnection object using the removeStatementEventListener() method. Methods addStatementEventListener and removeStatementEventListener are new methods in the PooledConnection interface in JDBC 4.0. Pooling of Statement objects is another new feature in JDBC 4.0. The Statement interface has two new methods in JDBC 4.0 for Statement pooling: isPoolable() and setPoolable().
The isPoolable method checks if a Statement object is poolable and the setPoolable method sets the Statement object to poolable. When an application closes a PreparedStatement object using the close() method, the PreparedStatement object is not actually closed. The PreparedStatement object is returned to the pool of PreparedStatements. When the connection pool manager closes a PooledConnection object by invoking the close() method of PooledConnection, all the associated statements also get closed. Pooling of PreparedStatements provides significant optimization, but if a large number of statements are left open, it may not be an optimal use of resources. Thus, the following procedure is followed to obtain a connection in an application server using a data source:
ConnectionPoolDataSource provides some configuration properties to configure a connection pool. The configuration pool properties are not set by the JDBC client, but are implemented or augmented by the connection pool. The properties can be set in a data source configuration. Therefore, it is not for the application itself to change the settings, but for the administrator of the pool, who also sometimes happens to be the developer, to do so. Connection pool properties supported by ConnectionPoolDataSource are discussed in Table 1.
Setting the EnvironmentBefore getting started, we have to install the JDeveloper 10.1.3 IDE and the MySQL 5.0 database. Download JDeveloper from: http://www.oracle.com/technology/software/products/jdev/index.html. Download the MySQL Connector/J 5.1, the MySQL JDBC driver that supports JDBC 4.0 specification. To install JDeveloper, extract the JDeveloper ZIP file to a directory. Log in to the MySQL database and set the database to test. Create a database table, Catalog, which we will use in a Web application. The SQL script to create the database table is listed below:
CREATE TABLE Catalog(CatalogId VARCHAR(25)PRIMARY KEY, Journal VARCHAR(25), Publisher VARCHAR(25),Edition VARCHAR(25), Title Varchar(45), Author Varchar(25));INSERT INTO Catalog VALUES(‘catalog1', ‘Oracle Magazine',‘Oracle Publishing', ‘Nov-Dec 2004', ‘Database Resource Manager', ‘Kimberly Floss');INSERT INTO Catalog VALUES(‘catalog2', ‘Oracle Magazine', ‘Oracle Publishing',‘Nov-Dec 2004', ‘From ADF UIX to JSF', ‘Jonas Jacobi');
MySQL does not support ROWID; support has been added in JDBC 4.0. Having installed the JDeveloper IDE, next we will configure a JDBC connection in the Connections Navigator. Select the Connections tab and right-click on the Database node to select New Database Connection (see Figure 1).
Click on Next in Create Database Connection Wizard. In the Create Database Connection Type window, specify a Connection Name - MySQLConnection for example - and set Connection Type to Third Party JDBC Driver, because we will be using a MySQL database, which is a third-party database for Oracle JDeveloper and click on Next. If a connection is to be configured with an Oracle database select Oracle (JDBC) as the Connection Type and click on Next (see Figure 2).
In the Authentication window specify Username as root (Password is not required to be specified for a root user by default), and click on Next. In the Connection window, we will specify the connection parameters, such as the driver name and connection URL; click on New to specify a Driver Class. In the Register JDBC Driver window, specify Driver Class as com.mysql.jdbc.Driver and click on Browse to select a Library for the Driver Class. In the Select Library window, click on New to create a new library for the MySQL Connector/J 5.1 JAR file. In the Create Library window, specify Library Name as MySQL and click on Add Entry to add a JAR file entry for the MySQL library. In the Select Path Entry window select mysql-connector-java-5.1.3-rcmysql-connector-java-5.1.3-rc-bin.jar and click on Select. In the Create Library window, after a Class Path entry gets added to the MySQL library, click on OK. In the Select Library window, select the MySQL library and click on OK. In the Register JDBC Driver window, the MySQL library gets specified in the Library field and the mysql-connector-java-5.1.3-rcmysql-connector-java-5.1.3-rc-bin.jar gets specified in the Classpath field. Now, click on OK. The Driver Class, Library, and Classpath fields get specified in the Connection window. Specify URL as jdbc:mysql://localhost:3306/test, and click on Next (see Figure 3).
In the Test window click on Test Connection to test the connection that we have configured. A connection is established and a success message gets output in the Status text area. Click on Finish in the Test window. A connection configuration, MySQLConnection, gets added to the Connections navigator (see Figure 4).
The connection parameters are displayed in the structure view. To modify any of the connection settings, double-click on the Connection node. The Edit Database Connection window gets displayed. The connection Username, Password, Driver Class, and URL can be modified in the Edit window.
A database connection configured in the Connections navigator has a JNDI name binding in the JNDI naming service provided by OC4J. Using the JNDI name binding, a DataSource object may be created in a J2EE application. To view or modify the configuration settings of the JDBC connection select Tools | Embedded OC4J Server Preferences in JDeveloper. In the window displayed, select Global | Data Sources node, and to update the data-sources.xml file with the connection defined in the Connections navigator click on the Refresh Now button. Checkboxes may be selected to Create data-source elements where not defined and to Update existing data-source elements (see Figure 5).
The connection pool and data source associated with the connection configured in the Connections navigator get listed. Select the jdev-connection-pool-MySQLConnection node to list the connection pool properties as Property Set A and Property Set B (see Figure 6).
The tuning properties of the JDBC connection pool may be set in the Connection Pool window. The different tuning attributes are listed in Table 2.
Select Property Set B to specify additional connection pool properties (see Figure 7).
The connection pool properties in Property Set B are discussed in Table 3.
The Connection Factory node specifies the Factory Class, User name, Password, Login Timeout, and connection URL. The factory class must implement one of the following interfaces: java.sql.Driver, javax.sql.DataSource, javax.sql.ConnectionPoolDataSource, javax.sql.XADataSource (see Figure 8).
The Managed DataSource node specifies the managed data sources associated with the connection and which are data sources managed by the OC4J. A managed data source is an OC4J implementation of the javax.sql.DataSource interface that wraps a JDBC driver class, or data source class. Even if the factory class does not implement the javax.sql.DataSource interface, the OC4J implementation of the factory class implements the javax.sql.DataSource interface. A managed data source supports connection caching, global transaction management, and error handling, all provided by the OC4J. A managed data source is associated with a connection pool and thus has the advantage of being able to specify the tuning parameters. The JNDI Name of the data source is specified in the managed data source window. The JNDI Name is in the jdbc/MySQLConnectionDS format, with MySQLConnection being the connection name configured in the Connections navigator (see Figure 9).
A connection MySQLConnection in the Connections navigator is available as a data source with the JNDI Name binding jdbc/MySQLConnectionDS. To obtain a connection from the data source, add a resource-ref element to the Web application in which a connection is to be obtained. In a servlet or JSP application, a connection may be obtained with the data source JNDI Name.
InitialContext initialContext = new InitialContext();javax.sql.DataSource ds = (javax.sql.DataSource)initialContext.lookup("java:comp/env/jdbc/MySQLConnectionDS");java.sql.Connection conn = ds.getConnection();
JavaEE 5 defines annotations to support resource injection. Resource injection is the injection of external resources, such as a data source in a JEE 5 application using the javax.annotation.Resource annotation. JDeveloper 11 supports resource injection with annotations to obtain a handle of a data source. For example, define a catalogDS resource of the javax.sql.DataSource type, as shown below:
private @Resource DataSource catalogDS;
The catalogDS field of type javax.sql.DataSource is annotated with the @Resource annotation. JNDI lookup is not required with resource injection, and the DataSource resource is also not defined in the web.xml deployment descriptor.
JDBC Configuration ErrorsYou might get errors while configuring a JDBC connection. If you are using MySQL, and the connection URL is incorrect, or the MySQL database is not running, the following error message is generated:
Communications link failure
If you are using an Oracle database, some possible connection configuration errors are listed below:
IO exception: The Network Adapter could not establish the connectionIO exception: Connection refused
The Network Adapter could not establish the connection exception is caused by one or more of the following configuration errors:
The Connection refused exception is caused by one or more of the following configuration errors:
C:>sqlplus SYS/<pwd> AS SYSDBA
At the SQL prompt, start the database instance with the startup command:
SummaryJDeveloper IDE provides a built-in Connections navigator to configure a connection with any relational database for which a JDBC driver is available. A connection configured in the Connections navigator is also available as a data source. In this article, we have configured a JDBC connection in JDeveloper with the MySQL database using the MySQL Connector/J 5.1 JDBC 4.0 driver.
We can visualize resource starvation using an elaborate rendition of the Dining Philosophers Problem. This classic metaphor of resource allocation among processes was first introduced in 1971 by Edsger Dijkstra in his paper "Hierarchical Ordering of Sequential Processes." It's been a model and universal method for verifying theories on resource allocation ever since.
The metaphor goes like this: There are three well-known philosophers in an Asian bistro. Dinner is served but they are only given three chopsticks because the restaurant's supply truck has been stuck in a snow storm for a couple of days. Naturally each philosopher needs two chopsticks to eat his dinner and each is protected from interference while he uses a chopstick.
Plato skipped lunch that day and insists that he should have priority or else he'll faint. If he doesn't give up his chopsticks, the other philosophers won't be able to eat and eventually they'll starve. If Plato drops his chopsticks and immediately picks them up before the other philosophers can get them then they won't be able to eat and they'll eventually starve.
Dijkstra's Dining Philosophers Problem employed spaghetti and forks but I used chopsticks and Asian cuisine for a more realistic illustration since you can't eat spaghetti with a single chopstick (see Figure 1).
These are examples of resource starvation. You could also encounter deadlock. There are a couple of solutions like semaphores and monitors. But we won't think about solutions or deadlocks in this article. We'll focus on detecting resource starvation using IBM Thread and Monitor Dump Analyzer for Java.
What Is the IBM Thread and Monitor Dump Analyzer for Java?During the runtime of a Java process, some Java Virtual Machines (JVMs) may not respond predictably and often seem to hang up for a long time or indefinitely (until the JVM shuts down). It's sometimes very challenging to determine the root causes of these sorts of problems.
By triggering Java thread dumps or Javacores when a Java process doesn't respond, it's possible to collect diagnostic information related to the JVM and a Java application captured at a particular point during execution.
On some platforms, a Javacore is known as "javadump." The code that creates a Javacore is part of the JVM. One can control it by using environment variables and runtime switches. By default, a Javacore occurs when the JVM terminates unexpectedly. A Javacore can also be triggered by sending specific signals to the JVM. Although a Javacore or javadump can occur in Solaris JVMs, much of the content of the Javacore is added by IBM and, so, is present only in IBM JVMs.
IBM Thread and Monitor Dump Analyzer for Java analyzes thread dumps/Javacores and diagnoses monitor locks and thread activities to identify the root causes of hangs, deadlocks, and resource contention or monitor bottlenecks. It can analyze IBM, Solaris, and HP-UX Java thread dumps from Java Virtual Machine 1.3.1, 1.4.x, 5.0, and 6.0
More than three years ago, I created IBM Thread and Monitor Dump Analyzer for Java as a garage project and spent thousands of hours during weeknights, weekends, and vacations to provide my clients and colleagues with something that can help diagnose these problems easily, motivated by the same reasons as my other garage projects like IBM HeapAnalyzer, IBM Pattern Modeling and Analysis Tool, and IBM Performance Analyzer for Java for Windows. All the algorithms used have been filed with the U.S. Patent and Trademark Office.
The widgetry was introduced to the public about two years ago through alphaWorks where it's been one of the top downloads for 30 consecutive months. It's recorded 23,296 downloads so far and it's been used by more than 14,600 companies, government agencies, research facilities, and universities worldwide (these statistics are good as of October 2008).
What Is a Thread Dump?A Java thread dump is the one of the traces/dumps that JVM provides to help diagnosis a hang, deadlock, or monitor contention issue. It contains diagnostic information related to the JVM and a Java application captured at a point during execution. For example, the information can be a list of all the threads that run on a Java virtual machine. Usually thread dumps have more than just thread information. Thread dumps can produce information about the operating system, application environment, threads, stacks, locks, and memory. IBM Thread Dumps/Javacores provide much more information like core interface, data conversion/unicode, class, diagnosis, execution management/thread management, lock, execution engine, mixed mode interpreter, JIT (Just-in-Time compiler), storage/JVM heap, and hardware portability interface/extended hardware portability interface.
The contents and formats of Java thread dumps depend on the platform you're running on and the JVM provider.
Since a thread dump's format isn't a part of the SDK specification, each SDK vendor provides a unique thread dump format and its own JVM information. Currently IBM Thread and Monitor Dump Analyzer for Java understands IBM, Solaris, and HP-UX Java thread dump formats.
By default, IBM JVM thread dumps occur when the JVM terminates unexpectedly. A thread dump can also be triggered by sending specific signals to the JVM. Thread dumps are usually human readable text. In an IBM JVM, the thread dump is often called a Javadump or Javacore. Javacore is NOT the same as a core file, which is generated by a system dump.
Before IBM Thread and Monitor Dump Analyzer for Java was introduced, people had to manually check hundreds of threads in the thread dumps using their favorite editors. With IBM Thread and Monitor Dump Analyzer for Java, we can easily diagnose a variety of issues without reading through hundreds of thread stack traces.
Usually thread dumps aren't as large as heap dumps. Usually its size is around 1MB or less unless you have large number of threads or classes. It's not a big deal to manually review thread dumps if you only have a handful of threads running on your JVM. If you have hundreds of threads with dozens of Java monitors, it gets complicated.
How Does It Work?This technology analyzes the information in each thread and provides diagnostic information, such as current thread information, the signal that caused the Javacore/Java heap information (maximum Java heap size, initial Java heap size, garbage collector counter, allocation failure counter, free Java heap size, and allocated Java heap size), number of runnable threads, total number of threads, number of monitors locked, native memory usage of each JVM component, and deadlock information.
IBM Thread and Monitor Dump Analyzer for Java also provides you with the recommended size of the Java heap cluster (applicable only to IBM SDK 1.4.2 and 1.3.1 SR7 or above) based on a heuristic analysis engine.
It compares each Javacore and provides process ID information for threads, a time stamp of the first Javacore, a time stamp of the last Javacore, the number of garbage collections a minute, the number of allocation failures a minute, the time between the first Javacore and the last Javacore, the number of hang suspects, and a list of hang suspects.
This technology also compares all monitor information in a Javacore and detects deadlock and resource contention or monitor bottlenecks, if there are any.
Let's Get StartedWe can simulate a starvation problem with a simple Java application.
In DiningPhilosophers.java, we created three chopsticks, c1, c2, and c3 with the names, chopstick 1, chopstick 2, and chopstick3. Then we created three philosophers, p1, p2, and p3 with the names, Socrates, Plato, and Aristotle. You might have noticed that each philosopher's name has a suffix that represents a priority since we want to give Plato more of a chance to eat. Besides a name and priority, each philosopher is also given a left chopstick and a right chopstick. We start with each philosopher, p1, p2, and p3 as shown in Listing 1. (Download Listings 1-6 here.)
In Chopstick.java, we just create a constructor, a getter, and a setter for the name of chopstick as shown in Listing 2
In Philosopher.java, we create a constructor, getters and setters for right and left chopsticks, and the philosopher's name. We also override the run() method in which we acquire Java's built-in monitors for left and right chopsticks and call the eat() method. In each () method, we pause for two seconds to simulate eating with the sleep() method but keep in mind that the philosopher is eating, not sleeping in the eat() method. See Listing 3.
Now let's put all the classes in a subdirectory, compile, and run them.
Compiling classes on a Unix platformjavac com/ibm/Jinwoo/starvation/DiningPhilosophers.java
Compiling classes on a Windows platformjavac com\ibm\jinwoo\starvation\DiningPhilosophers.java
I used the latest release of IBM Java virtual machine 6.0 (build jvmwi3260-20080816_22093 VM build 20080816_022093_lHdSMr) and another vendor's latest release of a Java virtual machine 6.0 when I wrote this for a fair comparison.
Executing classesjava com.ibm.jinwoo.starvation.DiningPhilosophersPlato priority9 is eating with chopstick 3 and chopstick 1Plato priority9 is eating with chopstick 3 and chopstick 1Plato priority9 is eating with chopstick 3 and chopstick 1Plato priority9 is eating with chopstick 3 and chopstick 1Plato priority9 is eating with chopstick 3 and chopstick 1
Most of the time Plato will be eating and the other two philosophers will have less of a chance to eat. We can generate thread dumps by sending signal 3 to the process. On the Windows platform, you can use keyboard combinations like Ctrl-Break to send signal 3 to a process running in a command line window. Listing 4 has the results from the IBM Java virtual machine.
We used another vendor's Java virtual machine and redirected output to a file.
Generating thread dumps with another vendor's Java virtual machinejava com.ibm.jinwoo.starvation.DiningPhilosophers 1> sun.log
Now let's talk about thread dump a little more. In most Java platforms, thread dumps are generated when the JVM terminates unexpectedly because of an operating system signal or when the user enters a reserved key combination control-break on Windows, say. We can also generate thread dumps with IBM's JavaDump API: com.ibm.jvm.Dump.JavaDump() if you're running a IBM Java virtual machine.
You can use the kill command on most Unix systems:
For example, kill -3 $PID
For example, kill -11 $PID
On the IBM WebSphere Application Server 5/6 environment, you can use wsadmin script to generate thread dumps:
wsadmin.sh -conntype SOAP -port <port number>> set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]> $AdminControl invoke $jvm dumpThreads
This Java heap dump is about 70MB in size. -Xmx1000m should be enough for IBM HeapAnalyzer to process it. If you get java.lang.OutOfMemoryError from IBM HeapAnalyzer, you need to add more to the JVM with the -Xmx command-line option. Here's a command-line example for a Unix system to start version 3.4 of IBM HeapAnalyzer:
# /usr/java5/bin/java -Xmx1000m -jar ha34.jar
This is an example for Windows system:
C:\java5\bin\java -Xmx1000m -jar ha34.jar
If higher than V3.4 is available, please use that version. V3.4 is the latest version as of January 2009.
Currently there's no headless mode for IBM HeapAnalyzer. The following is the first screen from the tool. We can just click on the folder icon and open the Java heap dump (see Figure 5).
After the Java heap dump is loaded, an analysis window shows up with a Java heap leak suspect as seen in Figure 6.
Java heap usage is 52,053,322 bytes or approximately 49.6MB. Considering that we set -Xmx50m in the command line, it makes sense that the Java heap got exhausted. Unlike gasoline in your car's gas tank, it's virtually impossible to use up the last drop of the Java heap for a couple of reasons. One explanation is that there are 0.4MB of free Java heap but we wanted a 0.5MB Java heap. We would get java.lang.OutOfMemoryError even though we have 0.4MB of free space. Probably 0.4MB of space may not be a single contiguous space anyway.
IBM HeapAnalyzer identifies a leak suspect, java/lang/ref/Finalizer, which is responsible for 51,879,248 bytes (99.665596 %) of Java heap.
51,879,248 (99%)  5 java/lang/ref/Finalizer 0x25783a48
In the reference tree view, the suspect is highlighted in blue. Please note that we use the word, leak suspect, not leak perpetrator, since the tool can't be 100% sure whether this is a root cause of the Java heap leak. That's why we don't want a computer to make decisions under any judicial system.
So, why does IBM HeapAnalyzer think java/lang/ref/Finalizer is a leak suspect in Figure 7?
Here's a clue:
Number of objects with finalize() method 1,298,247Number of garbage objects implementing finalize() method 1,298,242
The number of garbage objects implementing the finalize() method is almost the same as the number of objects with a finalize() method. In most cases, the Java heap dump isn't supposed to contain any garbage because by default most of JVMs do garbage collection before generating a heap dump. But we do have garbage objects implementing finalize() method according to HeapAnalyzer's analysis. If you're skeptical about the analysis, let's investigate further to see whether the analysis is correct or not.
We can expand java/lang/ref/Finalizer to see what objects are referenced from java/lang/ref/Finalizer. After a couple of expansions from the reference tree view we realize that java/lang/ref/Finalizer objects are linked like chains.
If we click on one of the java/lang/ref/Finalizers, we can see the properties and values of the object in the window on the right.
java/lang/ref/Finalizer next 0x257838e0Java/lang/ref/Finalizer prev 0x25783930
The properties "next" and "prev" are variables of the java/lang/ref/Finalizer. They have references to the java/lang/ref/Finalizer. Each java/lang/ref/Finalizer has a reference to a java/lang/ref/Finalizer in the variable "prev" and a reference to a java/lang/ref/Finalizer in the variable "next." We can also find a variable "referent" that has a reference to an ObjectWYieldFinalizer. Does this object look familiar? You're right. That's an instance of the class we just built and ran.
ObjectWYieldFinalizer referent 0x25783900
Almost all of java/lang/ref/Finalizers have references to ObjectWYieldFinalizers as referents. Please note too that java/lang/ref/Finalizer has a reference to a java/lang/ref/ReferenceQueue in the variable "queue." We will come back later to check the variable "queue."
java/lang/ref/ReferenceQueue queue 0x2579a048
Let's take a look at the variable "prev" of the leak suspect java/lang/ref/Finalizer at 0x25783a48. It has a reference to another java/lang/ref/Finalizer. We can click on the icon Tree View to open more reference tree views (see Figure 8).
java/lang/ref/Finalizer prev 0x25783a70java/lang/ref/ReferenceQueue queue 0x2579a048
java/lang/ref/Finalizer at 0x25783a70 is marked with V (check icon) under the leak suspect java/lang/ref/Finalizer at 0x25783a48. This means java/lang/ref/Finalizer at 0x25783a70 is also referenced from other objects. We can find it under java/lang/ref/ReferenceQueue at 0x2579a048. There's the same chain pattern of java/lang/ref/Finalizer. Here's a something very interesting. The variable "queue" does not have a reference to java/lang/ref/ReferenceQueue. Instead it's pointing to java/lang/ref/ReferenceQueue$Null.
java/lang/ref/ReferenceQueue$Null queue 0x2579b9c8
Is that only for java/lang/ref/Finalizer at 0x25783a70? We can expand java/lang/ref/Finalizer at 0x25783a70 to see what other java/lang/ref/Finalizer objects have in the variable "queue" (see Figure 9).
It's very interesting that other java/lang/ref/Finalizer objects also have 0x2579b9c8 (java/lang/ref/ReferenceQueue$Null) in the variable "queue." Let's find out what java/lang/ref/ReferenceQueue$Null at 0x2579b9c8 is. Select java/lang/ref/ReferenceQueue$Null at 0x2579b9c8, bring up a pop-up menu and select List parents menu as seen in Figure 10.
Here's list of objects that have references to java/lang/ref/ReferenceQueue$Null at 0x2579b9c8. Let's sort them by name by clicking on the name header of the table. Click on it again to sort in reverse order. We can find the class of java/lang/ref/ReferenceQueue at the top of the table. From the detailed information pop-up menu of the class java/lang/ref/ReferenceQueue, we can see that the address 0x2579b9c8 is referenced as the variable "ENQUEUED" (see Figure 11).
java/lang/ref/ReferenceQueue$Null ENQUEUED 0x2579b9c8
Based on the variable name "ENQUEUED," we can guess that any java/lang/ref/Finalizer object with ENQUEUED in the "queue" variable is queued for finalization. Other java/lang/ref/Finalizer objects without ENQUEUED in the "queue" variable are eventually going to be enqueued for finalization. How many java/lang/ref/Finalizer objects do we have in the queue? Probably 1,251,762 according to the variable "queueLength" of java/lang/ref/ReferenceQueue, which means 46,485 java/lang/ref/Finalizer objects need to be enqueued (see Figure 12).
If a java/lang/ref/Finalizer object is enqueued, is it finalized? Not necessarily, according to our investigation. In ObjectWYieldFinalizer, we implemented the finalize() method with Thread.yield(), which means it likely never completes executing the finalize() method. So java/lang/ref/Finalizer objects will stay in the queue and cause the Java heap to leak. The java/lang/ref/Finalizer object itself might be small in size. If we have millions of them, that's not trivial. Furthermore, java/lang/ref/Finalizer doesn't hang around alone, it has a reference to the object that has the finalize() method. So we would have millions of java/lang/ref/Finalizer objects and their referenced objects, millions of objects that have finalize() methods in the Java heap growing and growing. Eventually we would see java.lang.OutOfMemoryError due to Java heap exhaustion.
We have a similar result with ObjectWExceptionFinalizer.
Let's run ObjectWEmptyFinalizer in which we did not implement any code in the finalize() method and ObjectWOFinalizer that did not have any finalize() method on Sun's JVM. Even after several hours, we don't see any java.lang.OutOfMemoryError. -XX:+HeapDumpOnOutOfMemoryError will not create any Java heap dump if there's no java.lang.OutOfMemoryError. Here's another card for that situation. -XX:+HeapDumpOnCtrlBreak will create a Java heap dump on a Control-Break key combination or SIGQUIT signal. This is a way to trigger a Java heap dump on demand. Currently not all of Sun's JVMs support these options. Please refer to the JVM documentation for detailed information.
In Figure 13 there's an analysis of a Java heap dump from ObjectWEmptyFinalizer. Of course, we have to trigger a Java heap dump with a -XX:+HeapDumpOnCtrlBreak command-line option in place since there's no java.lang.OutOfMemoryError.
Java heap usage is only 218,189 bytes. That's why we didn't get any java.lang.OutOfMemoryError. There are only nine objects that have finalize() methods in the Java heap. We had millions of them in the Java heap dump from ObjectWYieldFinalizer. There are chains of java/lang/ref/Finalizer objects but only nine of them exist. Looks like the JVM didn't have any problem completing the finalize() methods of the ObjectWEmptyFinalizer and reclaiming spaces occupied by ObjectWEmptyFinalizer and Finalizers.
Let's try the IBM Java runtime and take a look at the Java garbage collection trace and Java heap dumps. You don't need a -XX:+HeapDumpOnCtrlBreak or -XX:+HeapDumpOnOutOfMemoryError command-line option on an IBM JVM. You can create a Java heap dump on a Control-Break key combination or SIGQUIT signal without any additional command-line options. Here's a Java garbage collection trace from an IBM Java virtual machine. With a -verbosegc option alone, we can get quite a lot of information (see Listing 7).
Figure 14 shows the analysis and recommendation from the IBM Pattern Modeling and Analysis Tool. They're similar.
From chart view, the used tenured area goes up rapidly and reaches the maximum limit (see Figure 15).
The IBM Java runtime provides a Portable Heap Dump (PHD) format of the Java heap dump by default in recent versions. In earlier versions a Text (TXT) format was provided by default. Here's a Java heap dump from ObjectWYieldFinalizer on IBM Java 6. Yes, there's a java.lang.OutOfMemoryError (see Figure 16).
Java heap usage is 52,427,816 bytes, approximately 49.99MB, almost reaching the maximum Java heap size of 50MB. No wonder we got java.lang.OutOfMemoryError. Unfortunately there's no leak suspect in the Java heap dump taken from IBM Java 6. We don't see any java/lang/ref/Finalizer object chains either in the IBM Java 6 heap dump. Let's search for ObjectWYieldFinalizer objects by clicking on search icon and putting ObjectWYieldFinalizer in the search string (see Figure 17).
We have as many as 3,251,653 ObjectWYieldFinalizer objects. They are holding 52,026,464 bytes of Java heap. ObjectWYieldFinalizer objects are not referenced from java/lang/ref/Finalizer objects. They do not have any parents. We see the same pattern in IBM Java 5 runtime as well. It seems that IBM Java 5 and Java 6 implement Finalizers in native code even though I haven't looked at the source code. ObjectWYieldFinalizer object should have been garbage collected but they are still in Java heap. They are not referenced from any Java object, which means they are referenced from native code. That's why I suspect that IBM Java 6 and Java 5 implement Finalizers in native code. Is that a good move? Maybe or maybe not. The efficiency of the native code would be an upside. We have more room in the Java heap since Finalizers use less Java heap thanks to native Finalizers. In the IBM Java 6 heap dump, 3,251,653 ObjectWYieldFinalizer objects were able to fit in 50MB of Java heap whereas Sun's Java 6 could only accommodate 1,298,244 ObjectWYieldFinalizer objects in 50MB of Java heap. But IBM Java 6 and Java 5 would consume native memory to handle native Finalizers. Native memory usage is not limited by the -Xmx command-line option. A downside is that we can no longer keep track of Finalizers in the Java heap dump (see Figure 18).
Let's check out what IBM Java used to be in Java Virtual Machine version 1.4.2. Here's a Java heap dump from ObjectWYieldFinalizer on IBM Java 1.4.2 (see Figure 19).
This looks like the Java heap dump from Sun's Java runtime. We see the same pattern of chained java/lang/ref/Finalizer objects.
Number of garbage objects implementing finalize() method 1,073,276Number of objects with finalize() method 1,073,654Java heap usage 52,527,856 bytes
By expanding Finalizer objects, we can confirm that reference structures are almost same as what we saw with Sun's Java heap dump (see Figure 20).
The java/lang/ref/Finalizer object at 0x4f12d78 has a reference to the java/lang/ref/ReferenceQueue object at 0x2872730. The java/lang/ref/Finalizer object at 0x4f12d48 has a reference to java/lang/ref/ReferenceQueue$Null at 0x2869d20, which is probably enqueued for finalization. Unfortunately the IBM Java heap dump (PHD/TXT) does not provide the names of variables or the contents of the variables. So there's no way to find out which Finalizer object is the next Finalizer object from the PHD or TXT format of the Java heap dump.
Analysis of Java Thread DumpsWe can also take a look at this problem from the Java thread's point of view. Let's get a copy of the IBM Thread and Monitor Dump Analyzer for Java from http://www.alphaworks.ibm.com/tech/jca and analyze Java thread dumps.
The Java thread dump at the top, javacore.20081111.081343.3360.txt, is taken from the IBM Java 1.4.2 runtime (see Figure 21).
Another dump at the middle, verbosegc.txt_1, is taken from the Sun Java 6 runtime. The other thread dump at the bottom, javacore.20081111.081932.2172.0003.txt, is taken from the IBM Java 6 runtime.
We can see the Finalizer thread and the Reference Handler thread. We do not see the Reference Handler thread in the IBM Java 6 thread dump though. All Finalizer threads are executing the java.lang.Thread.yield() method, which causes the current thread (Finalizer thread) to pause and allow other thread to run. Reference Handler threads enqueue Finalizer objects for finalization. All the stack traces of the Finalizer thread have runFinalizer() or similar methods. The runFinalizer() method calls the finalize() method in the ObjectWYieldFinalizer object and the finalize() method calls the java.lang.Thread.yield() method. Basically the Finalizer thread paused because of the java.lang.Thread.yield() method.
ConclusionWe ran an experiment on various finalizer implementations in various Java Virtual Machines. We used a handful of tools to investigate the problem from different perspectives. The finalize() method could be used to do cleanup tasks on any system resources before an object is discarded when the object is no longer referenced. We observed that there's risks in using the finalize() method in the current implementation of IBM and Sun Java Virtual Machines. If we want to perform cleanup tasks on objects, we might want to consider finalizers as a last resort and implement our own more predictable cleanup method.
3COM [8 Certification Exam(s) ]
AccessData [1 Certification Exam(s) ]
ACFE [1 Certification Exam(s) ]
ACI [3 Certification Exam(s) ]
Acme-Packet [1 Certification Exam(s) ]
ACSM [4 Certification Exam(s) ]
ACT [1 Certification Exam(s) ]
Admission-Tests [13 Certification Exam(s) ]
ADOBE [93 Certification Exam(s) ]
AFP [1 Certification Exam(s) ]
AICPA [2 Certification Exam(s) ]
AIIM [1 Certification Exam(s) ]
Alcatel-Lucent [13 Certification Exam(s) ]
Alfresco [1 Certification Exam(s) ]
Altiris [3 Certification Exam(s) ]
Amazon [2 Certification Exam(s) ]
American-College [2 Certification Exam(s) ]
Android [4 Certification Exam(s) ]
APA [1 Certification Exam(s) ]
APC [2 Certification Exam(s) ]
APICS [2 Certification Exam(s) ]
Apple [69 Certification Exam(s) ]
AppSense [1 Certification Exam(s) ]
APTUSC [1 Certification Exam(s) ]
Arizona-Education [1 Certification Exam(s) ]
ARM [1 Certification Exam(s) ]
Aruba [6 Certification Exam(s) ]
ASIS [2 Certification Exam(s) ]
ASQ [3 Certification Exam(s) ]
ASTQB [8 Certification Exam(s) ]
Autodesk [2 Certification Exam(s) ]
Avaya [96 Certification Exam(s) ]
AXELOS [1 Certification Exam(s) ]
Axis [1 Certification Exam(s) ]
Banking [1 Certification Exam(s) ]
BEA [5 Certification Exam(s) ]
BICSI [2 Certification Exam(s) ]
BlackBerry [17 Certification Exam(s) ]
BlueCoat [2 Certification Exam(s) ]
Brocade [4 Certification Exam(s) ]
Business-Objects [11 Certification Exam(s) ]
Business-Tests [4 Certification Exam(s) ]
CA-Technologies [21 Certification Exam(s) ]
Certification-Board [10 Certification Exam(s) ]
Certiport [3 Certification Exam(s) ]
CheckPoint [41 Certification Exam(s) ]
CIDQ [1 Certification Exam(s) ]
CIPS [4 Certification Exam(s) ]
Cisco [318 Certification Exam(s) ]
Citrix [48 Certification Exam(s) ]
CIW [18 Certification Exam(s) ]
Cloudera [10 Certification Exam(s) ]
Cognos [19 Certification Exam(s) ]
College-Board [2 Certification Exam(s) ]
CompTIA [76 Certification Exam(s) ]
ComputerAssociates [6 Certification Exam(s) ]
Consultant [2 Certification Exam(s) ]
Counselor [4 Certification Exam(s) ]
CPP-Institue [2 Certification Exam(s) ]
CPP-Institute [1 Certification Exam(s) ]
CSP [1 Certification Exam(s) ]
CWNA [1 Certification Exam(s) ]
CWNP [13 Certification Exam(s) ]
Dassault [2 Certification Exam(s) ]
DELL [9 Certification Exam(s) ]
DMI [1 Certification Exam(s) ]
DRI [1 Certification Exam(s) ]
ECCouncil [21 Certification Exam(s) ]
ECDL [1 Certification Exam(s) ]
EMC [129 Certification Exam(s) ]
Enterasys [13 Certification Exam(s) ]
Ericsson [5 Certification Exam(s) ]
ESPA [1 Certification Exam(s) ]
Esri [2 Certification Exam(s) ]
ExamExpress [15 Certification Exam(s) ]
Exin [40 Certification Exam(s) ]
ExtremeNetworks [3 Certification Exam(s) ]
F5-Networks [20 Certification Exam(s) ]
FCTC [2 Certification Exam(s) ]
Filemaker [9 Certification Exam(s) ]
Financial [36 Certification Exam(s) ]
Food [4 Certification Exam(s) ]
Fortinet [13 Certification Exam(s) ]
Foundry [6 Certification Exam(s) ]
FSMTB [1 Certification Exam(s) ]
Fujitsu [2 Certification Exam(s) ]
GAQM [9 Certification Exam(s) ]
Genesys [4 Certification Exam(s) ]
GIAC [15 Certification Exam(s) ]
Google [4 Certification Exam(s) ]
GuidanceSoftware [2 Certification Exam(s) ]
H3C [1 Certification Exam(s) ]
HDI [9 Certification Exam(s) ]
Healthcare [3 Certification Exam(s) ]
HIPAA [2 Certification Exam(s) ]
Hitachi [30 Certification Exam(s) ]
Hortonworks [4 Certification Exam(s) ]
Hospitality [2 Certification Exam(s) ]
HP [750 Certification Exam(s) ]
HR [4 Certification Exam(s) ]
HRCI [1 Certification Exam(s) ]
Huawei [21 Certification Exam(s) ]
Hyperion [10 Certification Exam(s) ]
IAAP [1 Certification Exam(s) ]
IAHCSMM [1 Certification Exam(s) ]
IBM [1532 Certification Exam(s) ]
IBQH [1 Certification Exam(s) ]
ICAI [1 Certification Exam(s) ]
ICDL [6 Certification Exam(s) ]
IEEE [1 Certification Exam(s) ]
IELTS [1 Certification Exam(s) ]
IFPUG [1 Certification Exam(s) ]
IIA [3 Certification Exam(s) ]
IIBA [2 Certification Exam(s) ]
IISFA [1 Certification Exam(s) ]
Intel [2 Certification Exam(s) ]
IQN [1 Certification Exam(s) ]
IRS [1 Certification Exam(s) ]
ISA [1 Certification Exam(s) ]
ISACA [4 Certification Exam(s) ]
ISC2 [6 Certification Exam(s) ]
ISEB [24 Certification Exam(s) ]
Isilon [4 Certification Exam(s) ]
ISM [6 Certification Exam(s) ]
iSQI [7 Certification Exam(s) ]
ITEC [1 Certification Exam(s) ]
Juniper [64 Certification Exam(s) ]
LEED [1 Certification Exam(s) ]
Legato [5 Certification Exam(s) ]
Liferay [1 Certification Exam(s) ]
Logical-Operations [1 Certification Exam(s) ]
Lotus [66 Certification Exam(s) ]
LPI [24 Certification Exam(s) ]
LSI [3 Certification Exam(s) ]
Magento [3 Certification Exam(s) ]
Maintenance [2 Certification Exam(s) ]
McAfee [8 Certification Exam(s) ]
McData [3 Certification Exam(s) ]
Medical [69 Certification Exam(s) ]
Microsoft [374 Certification Exam(s) ]
Mile2 [3 Certification Exam(s) ]
Military [1 Certification Exam(s) ]
Misc [1 Certification Exam(s) ]
Motorola [7 Certification Exam(s) ]
mySQL [4 Certification Exam(s) ]
NBSTSA [1 Certification Exam(s) ]
NCEES [2 Certification Exam(s) ]
NCIDQ [1 Certification Exam(s) ]
NCLEX [2 Certification Exam(s) ]
Network-General [12 Certification Exam(s) ]
NetworkAppliance [39 Certification Exam(s) ]
NI [1 Certification Exam(s) ]
NIELIT [1 Certification Exam(s) ]
Nokia [6 Certification Exam(s) ]
Nortel [130 Certification Exam(s) ]
Novell [37 Certification Exam(s) ]
OMG [10 Certification Exam(s) ]
Oracle [279 Certification Exam(s) ]
P&C [2 Certification Exam(s) ]
Palo-Alto [4 Certification Exam(s) ]
PARCC [1 Certification Exam(s) ]
PayPal [1 Certification Exam(s) ]
Pegasystems [12 Certification Exam(s) ]
PEOPLECERT [4 Certification Exam(s) ]
PMI [15 Certification Exam(s) ]
Polycom [2 Certification Exam(s) ]
PostgreSQL-CE [1 Certification Exam(s) ]
Prince2 [6 Certification Exam(s) ]
PRMIA [1 Certification Exam(s) ]
PsychCorp [1 Certification Exam(s) ]
PTCB [2 Certification Exam(s) ]
QAI [1 Certification Exam(s) ]
QlikView [1 Certification Exam(s) ]
Quality-Assurance [7 Certification Exam(s) ]
RACC [1 Certification Exam(s) ]
Real-Estate [1 Certification Exam(s) ]
RedHat [8 Certification Exam(s) ]
RES [5 Certification Exam(s) ]
Riverbed [8 Certification Exam(s) ]
RSA [15 Certification Exam(s) ]
Sair [8 Certification Exam(s) ]
Salesforce [5 Certification Exam(s) ]
SANS [1 Certification Exam(s) ]
SAP [98 Certification Exam(s) ]
SASInstitute [15 Certification Exam(s) ]
SAT [1 Certification Exam(s) ]
SCO [10 Certification Exam(s) ]
SCP [6 Certification Exam(s) ]
SDI [3 Certification Exam(s) ]
See-Beyond [1 Certification Exam(s) ]
Siemens [1 Certification Exam(s) ]
Snia [7 Certification Exam(s) ]
SOA [15 Certification Exam(s) ]
Social-Work-Board [4 Certification Exam(s) ]
SpringSource [1 Certification Exam(s) ]
SUN [63 Certification Exam(s) ]
SUSE [1 Certification Exam(s) ]
Sybase [17 Certification Exam(s) ]
Symantec [134 Certification Exam(s) ]
Teacher-Certification [4 Certification Exam(s) ]
The-Open-Group [8 Certification Exam(s) ]
TIA [3 Certification Exam(s) ]
Tibco [18 Certification Exam(s) ]
Trainers [3 Certification Exam(s) ]
Trend [1 Certification Exam(s) ]
TruSecure [1 Certification Exam(s) ]
USMLE [1 Certification Exam(s) ]
VCE [6 Certification Exam(s) ]
Veeam [2 Certification Exam(s) ]
Veritas [33 Certification Exam(s) ]
Vmware [58 Certification Exam(s) ]
Wonderlic [2 Certification Exam(s) ]
Worldatwork [2 Certification Exam(s) ]
XML-Master [3 Certification Exam(s) ]
Zend [6 Certification Exam(s) ]
Youtube : https://youtu.be/2-EjSxmxDvI
Dropmark : http://killexams.dropmark.com/367904/11534672
Wordpress : http://wp.me/p7SJ6L-uX
Scribd : https://www.scribd.com/document/358555350/Pass4sure-310-811-Sun-Certified-MySQL-5-0-Database-R-Administrator-Part-II-exam-braindumps-with-real-questions-and-practice-software
Issu : https://issuu.com/trutrainers/docs/310-811
weSRCH : https://www.wesrch.com/business/prpdfBU1HWO000LYMI
Dropmark-Text : http://killexams.dropmark.com/367904/12072537
Blogspot : http://killexams-braindumps.blogspot.com/2017/10/look-at-these-310-811-real-question-and.html
Vimeo : https://vimeo.com/243797692
Google+ : https://plus.google.com/112153555852933435691/posts/MWcggbtXqru?hl=en
publitas.com : https://view.publitas.com/trutrainers-inc/dont-miss-these-sun-310-811-dumps
Calameo : http://en.calameo.com/account/book#
Box.net : https://app.box.com/s/l28bgba7apdp64crkw931049q52glbcl
zoho.com : https://docs.zoho.com/file/5kgmrc7e9fa141571420194cbeefb76df8eb6