Jump to content

Reloading Jar Files In Real Time


Recommended Posts

There is a very cool software that i use, it is called JRebel(http://zeroturnaround.com/software/jrebel/).
 
What can it do?
You can reload any piece of code, without need to restart the server.
Let's say you created quite a large code, but simple error doesnt allow you to test it. Normally you would need to:
1. Fix the error
2. Compile fixes(3 seconds. If you are wondering how i compile my whole source code in 3 seconds, look below)
3. Close the Server(Lets say 2 seconds)
4. Create the Jars and paste them(3 seconds)
5. Start the server again(33 seconds)
6. Login(10 seconds)
7. Test
So totally it takes 51 seconds from fixing to next testing
 
With JRebel you need to:
1. Fix the error
2. Compile fixes(3 seconds)
3. Create the Jars and paste them(3 seconds)
4. Test
With JRebel it takes 6 seconds.
 
How long it takes to start the server with JRebel?
JRebel: 83 seconds
NO JRebel: 33 seconds
So that's big disadventage. If you are working on the code that runs at start of the server, its worth to disable the JRebel(it's very easy to disable it).
 
How applying the changes looks like?
1. Fix the error/make the improvement/add something new:
z8NW7AW.png
 
2. Compile changed classes
HCKW9lH.png

3. Build the Jars and paste them(I have got build file which automatically pastes my jars)
QmheC8p.png
 
When class is used by JVM, you will see the message that it was updated
rhGhrxl.png
 
4. Test
rlsSujE.png
 
How to install JRebel?
1. Get Trial(Don't worry about 2 weeks, it's very easy to crack or you can just buy it)
https://zeroturnaround.com/software/jrebel/download/
 
2. Activate it on your pc
- Intellij IDEA - https://zeroturnaround.com/software/jrebel/quickstart/intellij/#!/activation
- Eclipse - https://zeroturnaround.com/software/jrebel/quickstart/eclipse/#!/activation
 
3. Download JRebel.jar
https://zeroturnaround.com/software/jrebel/download/thank-you/?file=jrebel-6.1.3-nosetup.zip
 
4. Paste JRebel.jar near StartGameServer.bat
 
5. Put -javaagent:jrebel.jar just after java in StartGameServer.bat
5cxXKEO.png
 
6. You need to create jrebel folder near StartGameServer.bat and
- Add there jars that you want to be reloadable. I am adding just gameserver + scripts + commons
- So you will need to have those 3 jars in 2 locations: your libs + jrebel folder
- While launching the gameserver, remember that jars in jrebel must be exactly the same as your jars in libs, or JRebel will not work fine
zcscr1I.png
 
7. You need to create jrebel.xml, add it into your configs file
- Thats how my jrebel.xml looks like: http://pastebin.com/hNzjDE6R
- You should edit jarset dir, to link to your jrebel folder
 
8. Launch the gameserver. You should see something like this
I2Dj2sz.png
 
How to compile my changes so fast?
- I am compiling just classes that were modified lately, not the whole source
- I have got Build file which copies created jar to my libs + jrebel folder
 
So for the first time i click Build > Rebuild Project in Intellij IDEA(i don't know about eclipse). It takes a while but after that i can use Compile 'Player.java' or Make Project which compiles just changes files
The Compile files are put to "C:\Users\Michal\IdeaProjects\L2Tales\out\production\L2Tales"
My Build file: http://pastebin.com/MbkCBBVh

Link to comment
Share on other sites

It's obviously a tool to develop, not a thing to keep on a live installation (just saying about your loading statement).

I didn't test it on live server, but i think it wouldn't work well because:

1. Longer start up time as you said

2. Most likely lower performance would cause lags

3. Reloading larger classes would be felt by players in game

 

For development, its great :)

Link to comment
Share on other sites

I didn't test it on live server, but i think it wouldn't work well because:

1. Longer start up time as you said

2. Most likely lower performance would cause lags

3. Reloading larger classes would be felt by players in game

 

For development, its great :)

 

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

Link to comment
Share on other sites

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

i play on your server and when you fix something you make a restart , but well its a nice tool for the outdoors

Link to comment
Share on other sites

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

I think you might be talking about HotSwap. You can see the differences in here: http://zeroturnaround.com/software/jrebel/features/

Link to comment
Share on other sites

i play on your server and when you fix something you make a restart , but well its a nice tool for the outdoors

 

I said I develop, thats how I coded L2AEPvP back when I was developing it. Now its live and obviusly its not running in Eclipse..

 

 

I think you might be talking about HotSwap. You can see the differences in here: http://zeroturnaround.com/software/jrebel/features/

 
Im talking about Eclipse Debug that works like all Debug tools, you can even edit native C++ during runtime with good debugers..
Edited by xxdem
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • - lost love spells caster in, Amsterdam,Brazil,London,Kuwait .Egypt, Atlanta, Latvia, Lithuania, Sweden۞۩ஜ???? +256704892479  Results are 100% s=ure and guaranteed, spell casting specialist, , black magic death spells that work overnight or by accident. I Cast these strongest black magic revenge death spells that work fast overnight to kill ex-lover, husband, wife girlfriend Enemies overnight Https://nativelovespellscaster.com or she is in a far location, I guarantee you to have your results you are looking for immediately. Just make sure before you contact me you are committed and you want what you are looking for (Victim Death) because my death spell work fast overnight after casting the spells that work, guaranteed black magic love spells, guaranteed voodoo spells, spell to make someone sick and die, revenge spells that work instantly, real witches for hire, revenge spells on an ex- lover, how to put a Black magic death spells on ex-lover, Revenge instant death spells on toxic uncles powerful instant death spells online instant spell that work fast in USA, UK, Kuwait, Germany, Asian, Europe, Philippines, Canada, South Africa, Italy, Peru, India, Iran, Gambia. Sweden, Australia, Nigeria, Spain, Ghana, California, Greece. Death spell on someone, death spells that Death Revenge Spell on wicked friends, Voodoo Death Spells to kill Enemies Black Magic Spells To Harm Someone, Black magic death spells on ex-lover, Revenge instant death spells on toxic uncles powerful instant death spells online instant spell that work fast in USA, UK, Kuwait, Germany, Asian, Europe, Philippines, Canada, revenge spells, most powerful death spell, spell to die in your sleep, successful death spell, most powerful voodoo spell caster, voodoo spell casters in new Orleans, voodoo love spells reviews, proven authentic voodoo spell casters, most powerful voodoo priest in world, black magic tricks to destroy enemy. Results are 100% sure and guaranteed whatapp or cal, Europe, Philippines, Canada, South Africa, Italy, Peru, India, Iran, Gambia. spells, guaranteed voodoo spells, spell to make someone sick and die, revenge spells that work instantly, real witches for hire, revenge spells on an ex- lover, how to put a spell on someone who hurts you, spell to make someone sick, voodoo spells to hurt someone, spells to curse someone, powerful revenge spells, most powerful death spell, spell to die in your sleep, successful death spell, most powerful voodoo spell caster, voodoo spell casters in new Orleans, voodoo love spells reviews, proven authentic voodoo spell casters, most powerful voodoo priest in world, black magic tricks to destroy enemy. Results are 100% sure and guaranteed whatapp or call  ஜ۩۞۩ஜ ??? + 256704892479ஜ۩۞۩ஜ ??Https://nativelovespellscaster.com
    • Hello, my discord is : misanthropic1085           I am selling Frintezza Aq Baium     Reborn origins x1    
    • L2Topzone has a lower traffic ranking than every other website! We spent over 160 Euro for listing server and banner and we've got only 4 download conversions!  Proof: https://prnt.sc/YeJudEKFov1m
    • Any WTS code global chat for this? 
    • Hi, I see what you mean, but I do it differently.   I don't want some features from Hi5 in my project, so I gradually add Ai, zones, items, etc... manually.   And again I want some features from Classic.   So I'm continuing the Classic storyline up to High Five.   My project runs on the client's Prelude of War.   I will release the first public test version soon, which will still be without some "hi5" stuff, because first I need to test for example Fortress Siege, pets and some instances/quests. In the future, I also want to "unlock" new locations from the GoD story.   And what I like most about Classic is that you don't have SA in weapons and it goes back to the roots of Lineage 2. Also you can connect to my discord and talk about with me.
  • Topics

×
×
  • Create New...