Jump to content
  • 0

Unclose connection.


Question

Posted

Hello,

 

After the installation of Dressme : http://pastebin.com/5AYHVPit

 

All passes correctly, except that the GS grumbles a little :

 

Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restoreVisualArmors(L2PcInstance.java:17365)
java.lang.RuntimeException at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restoreVisualArmors(L2PcInstance.java:17365)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restore(L2PcInstance.java:7999)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.load(L2PcInstance.java:1316)
        at com.l2jserver.gameserver.network.L2GameClient.loadCharFromDisk(L2GameClient.java:581)
        at com.l2jserver.gameserver.network.clientpackets.CharacterSelect.runImpl(CharacterSelect.java:133)
        at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:70)
        at com.l2jserver.gameserver.network.L2GameClient.run(L2GameClient.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)


Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17424)
java.lang.RuntimeException
        at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17424)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:8276)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:9115)
        at com.l2jserver.gameserver.network.L2GameClient.saveCharToDisk(L2GameClient.java:376)
        at com.l2jserver.gameserver.network.L2GameClient$AutoSaveTask.run(L2GameClient.java:901)
        at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:93)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

        at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.checkIfExist(L2PcInstance.java:17397)
java.lang.RuntimeException
        at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.checkIfExist(L2PcInstance.java:17397)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17417)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:8276)
        at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:9115)
        at com.l2jserver.gameserver.network.L2GameClient.saveCharToDisk(L2GameClient.java:376)
        at com.l2jserver.gameserver.network.L2GameClient$AutoSaveTask.run(L2GameClient.java:901)
        at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:93)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)

        at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

 

 

 

Here are the concerned codes :

 

 

 

 

private void restoreVisualArmors()
{
	try
	{
		Connection con = L2DatabaseFactory.getInstance().getConnection();
		PreparedStatement statement = con.prepareStatement("SELECT * FROM character_visual_armors WHERE charId=?");
		statement.setInt(1, getObjectId());
		ResultSet rset = statement.executeQuery();
		if (rset.next())
		{
			isUsingVisualArmors(rset.getBoolean("isUsingVisual"));
			setVisualArmor(VisualArmors.Armor, rset.getInt("armor"));
			setVisualArmor(VisualArmors.Legs, rset.getInt("leggings"));
			setVisualArmor(VisualArmors.Feet, rset.getInt("feet"));
			setVisualArmor(VisualArmors.Gloves, rset.getInt("gloves"));
			setVisualArmor(VisualArmors.LHand, rset.getInt("lHand"));
			setVisualArmor(VisualArmors.Sword, rset.getInt("sword"));
			setVisualArmor(VisualArmors.Bow, rset.getInt("bow"));
			setVisualArmor(VisualArmors.Pole, rset.getInt("pole"));
			setVisualArmor(VisualArmors.Dual, rset.getInt("dualWeapons"));
			setVisualArmor(VisualArmors.BigSword, rset.getInt("bigSword"));
		}
		rset.close();
		statement.close();
	}

	catch (Exception e)
	{
		_log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e);
	}
}

 

private void storeVisualArmors()
{
	if (!checkIfExist())
	{
		insertVisualArmors();
	}
	// UPDATE characters SET vitality_points=?,language=? WHERE charId=?";
	try
	{
		Connection con = L2DatabaseFactory.getInstance().getConnection();
		PreparedStatement statement = con.prepareStatement("UPDATE character_visual_armors SET isUsingVisual=?,armor=?,leggings=?,feet=?,gloves=?,sword=?,bow=?,pole=?,dualWeapons=?,bigSword=?,lHand=? WHERE charId=?");
		statement.setInt(1, isUsingVisualArmors() ? 1 : 0);
		statement.setInt(2, getVisualArmor(VisualArmors.Armor, true) == null ? 0 : getVisualArmor(VisualArmors.Armor, true).getItemId());
		statement.setInt(3, getVisualArmor(VisualArmors.Legs, true) == null ? 0 : getVisualArmor(VisualArmors.Legs, true).getItemId());
		statement.setInt(4, getVisualArmor(VisualArmors.Feet, true) == null ? 0 : getVisualArmor(VisualArmors.Feet, true).getItemId());
		statement.setInt(5, getVisualArmor(VisualArmors.Gloves, true) == null ? 0 : getVisualArmor(VisualArmors.Gloves, true).getItemId());
		statement.setInt(6, getVisualArmor(VisualArmors.Sword, true) == null ? 0 : getVisualArmor(VisualArmors.Sword, true).getItemId());
		statement.setInt(7, getVisualArmor(VisualArmors.Bow, true) == null ? 0 : getVisualArmor(VisualArmors.Bow, true).getItemId());
		statement.setInt(8, getVisualArmor(VisualArmors.Pole, true) == null ? 0 : getVisualArmor(VisualArmors.Pole, true).getItemId());
		statement.setInt(9, getVisualArmor(VisualArmors.Dual, true) == null ? 0 : getVisualArmor(VisualArmors.Dual, true).getItemId());
		statement.setInt(10, getVisualArmor(VisualArmors.BigSword, true) == null ? 0 : getVisualArmor(VisualArmors.BigSword, true).getItemId());
		statement.setInt(11, getVisualArmor(VisualArmors.LHand, true) == null ? 0 : getVisualArmor(VisualArmors.LHand, true).getItemId());
		statement.setInt(12, getObjectId());
		statement.execute();
	}
	catch (Exception e)
	{
		_log.log(Level.WARNING, "Could not store character " + getObjectId() + " visual armors data: ", e);
	}
}

 

private boolean checkIfExist()
{
	try
	{
		Connection con = L2DatabaseFactory.getInstance().getConnection();
		PreparedStatement statement = con.prepareStatement("SELECT charId FROM character_visual_armors WHERE charId=?");
		statement.setInt(1, getObjectId());
		try (ResultSet rset = statement.executeQuery())
		{
			if (rset.next())
			{
				return true;
			}

		}

	}
	catch (Exception e)
	{
		_log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e);
	}
	return false;
}

 

 

How to solve these problems?

Thank You.

4 answers to this question

Recommended Posts

  • 0
Posted

All

 

	try
	{
		Connection con = L2DatabaseFactory.getInstance().getConnection();

 

has to be

 

	try (Connection con = L2DatabaseFactory.getInstance().getConnection())
	{

  • 0
Posted

SweeTs method is the thing to do, but is doable only if your project uses JDK 7.

 

Otherwise you have to use old methods, depending of your pack/chronicle :

- finally { L2DatabaseFactory.close(con); }

- finally { try { con.close(); } catch... }

  • 0
Posted

O my my , did I write that part of the code ? Shame on me :P  If you are not in JDK7, in the catch block close the connection or in a finally block as tryskell said, better that way.

Guest
This topic is now closed to further replies.


  • Posts

    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Yes, just keep this post=)
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock