» Find Revision
L2J Revision Number: 5741
L2JDP Revision Number: 9363
Hello,
After the installation of Dressme : http://pastebin.com/5AYHVPit
All passes correctly, except that the GS grumbles a little :
Code: Select all
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 :
Code: Select all
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); } }
Code: Select all
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); } }
Code: Select all
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.
PS : Sorry if it's the bad forum.