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)
if you are selling something, you have to have both updated, right? people see forum first, not website.
if you are selling something, you have to have both updated, right? people see forum first, not website.
⏳ L2Elixir Open Beta goes live in less than 4 hours!
This Saturday, November 15th at 21:00 (UTC +2), the gates open for our biggest testing phase!
🔥 Don’t miss the first 30 minutes — exclusive rewards await!
A special NPC, “The Judge”, will appear in Giran, offering unique bonuses to early participants:
🏅 Open Beta Rewards:
- The first 2 players who talk to The Judge → Premium Account for Launch
- Another 2 random players who interact → Premium Account
- Everyone who speaks to the NPC within the first 30 minutes → Legendary Starter Pack for all characters on launch day (Nov 28th, 2025)
📌 The NPC will spawn exactly at 21:00 (UTC+2).
⏱️ Follow the countdown on our website — the hype is real!
Create your account & download the Updater to be ready!
🔗 https://l2elixir.org/connect/
💬 Discord: https://discord.gg/5ydPHvhbxs
Question
Kzah
Hello,
After the installation of Dressme : http://pastebin.com/5AYHVPit
All passes correctly, except that the GS grumbles a little :
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