I have good friends who are drinkers. I have good friends who are social drinkers, but aren't really drinkers. I have good friends who aren't drinkers. I have good friends who are drinkers, and also want all the non-drinkers to drink too. I have good friends who aren't drinkers and want to eradicate drinking, and maybe the drinkers too.
For the longest time, there was no drinking. Then, in the cold climes up North, alcohol was discovered. It became quickly popular in those wintry wastelands, and made human habitation bearable. It spread, as human ingenuity often does, far and wide. It even made it down here, to the sunny South, where the juices and nectars had held sway, where the coconut was indeed 'King'.
For the tropical Southerner, the harsh solution held no great attraction. And for the Northener who was now in paradise, it didn't really make sense to wear fur coats or drink harsh vodka, either. And so, the hybrids happened. Mix a bit of this, with a bit of that, swirl it around for a bit of divinity. Cocktails happened, Sangria happened. There was a perfect blend, and it felt right at home in the sun.
And this is how drinking survived in the South for many years. And then came the days of speed, of flying machines and mighty ships, of postal services that were but instant.
And the vodka rediscovered the Cocktail, and the Cocktail rediscovered the Vodka.
And said the Vodka, "What have you done to my pristine condition?"
And said the Cocktail, "But is it not nature, for things to evolve and adapt?"
"From the North hail I, and you better not corrupt what is pure."
And so, with a huge marketing campaign too, the Vodka made its way into Southern bars again. The cotton sarong made way for the fur coat, and the centuries of Southern heritage made way for reverential aping of the North.
And the once peaceful bonds of brotherhood between the drinker and the non-drinker were broken, and families that for centuries were united regardless of such trivialities were suddenly at war. The merry sessions of baila and dance made way for chavs running around starting brawls and breaking bottles.
To drink a cocktail was to blaspheme.
To even associate with a non-drinker was discouraged, unless you were engaging them to drag them to the bar and make them drinkers too.
The non-drinkers felt threatened and reacted. Street corners were all suddenly filled with fruit juice stalls. The Coconut had to be respectfully addressed as "His Majesty, the King of Coconuts". Or else.
Shandy was thrown at bar patrons.
"Would our fathers ever have started drinking if they knew the Sangria was going to make way for the Vodka?" "Fur coats? In this weather? Would our grandmothers ever have let this happen?" "All these drunks do is start brawls! It encourages violence, you know?"
"All they have is an irrational fear of Vodka and Whiskey!"  This is, and will always be, what drinking is about". "Those coconuts are just bitter about how happy drinkers are!"
You'd think the world would grow closer, that the North and the South would finally just be directions on a map. But from here, it seems to me, the North looks on gleefully as the South tears itself apart.
I have good friends who are drinkers. I have good friends who are social drinkers, but aren't really drinkers. I have good friends who aren't drinkers. I have good friends who are drinkers, and also want all the non-drinkers to drink too. I have good friends who aren't drinkers and want to eradicate drinking, and maybe the drinkers too.
And if you are a good friend of mine, you'd know that this post isn't about drinking at all.


Ruby is a programing language that was designed for programmer productivity and fun.
"I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language." - Matz
“Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.”
Ruby is a scripting language
Scripting languages:
Python, Ruby, Javascript
C#, Java, Obj-C
Getting started with programming in Ruby is easy
For Macs: Open you 'Terminal app'
For Windows: Open git bash
$ irb
irb(main):001:0>
This opens a interactive ruby environment. To exit from `irb`
use the command `exit`, or you can use `ctrl + c`


- BaseScreen - Class in gameplayer.view
-
This class provides for a private interface to create a base screen view that
will hold the other view components of the gaming program.
- BaseScreen(Stage, Game) - Constructor for class gameplayer.view.BaseScreen
-
Adds the auxiliary views, like the HUD display, ToolBar, and GameScreen,
to the BaseScreen
- BaseScreenController - Class in gameplayer.controller
-
- BaseScreenController(Stage, BaseScreen, ResourceBundle) - Constructor for class gameplayer.controller.BaseScreenController
-
- begin() - Method in class gameplayer.controller.GameController
-
Will play the animation timeline.
- BottomCollision - Class in gameengine.model.Triggers
-
- BottomCollision(Actor, Actor) - Constructor for class gameengine.model.Triggers.BottomCollision
-
- BranchScreenController - Class in gameplayer.controller
-
This abstract controller class will allow returning to splash functionality for all screens that are branches off the splash screen
- BranchScreenController(Stage) - Constructor for class gameplayer.controller.BranchScreenController
-
Instantiates BranchScreenController
- ButtonEdit - Class in gui.view
-
- ButtonEdit(IScreenController, String, String) - Constructor for class gui.view.ButtonEdit
-
- ButtonFinish - Class in gui.view
-
On click, saves the game and returns user to the game player splash screen.
- ButtonFinish(IScreenController, String, String) - Constructor for class gui.view.ButtonFinish
-
- ButtonHome - Class in gui.view
-
Button to return to main screen
- ButtonHome(IScreenController, String, String) - Constructor for class gui.view.ButtonHome
-
- ButtonLoad - Class in gui.view
-
Button to load game.
- ButtonLoad(IScreenController, String, String) - Constructor for class gui.view.ButtonLoad
-
- ButtonMusic - Class in gui.view
-
- ButtonMusic(IScreenController, String, String) - Constructor for class gui.view.ButtonMusic
-
- ButtonNewActor - Class in gui.view
-
Button for adding a new actor.
- ButtonNewActor(IScreenController, String, String) - Constructor for class gui.view.ButtonNewActor
-
Constructs a button for adding a new actor.
- ButtonNewLevel - Class in gui.view
-
Button to create a new level and transition to level editing environment.
- ButtonNewLevel(IScreenController, String, String) - Constructor for class gui.view.ButtonNewLevel
-
Constructs a button for adding a new level.
- ButtonOpenHighScores - Class in gui.view
-
- ButtonOpenHighScores(IScreenController, String, String) - Constructor for class gui.view.ButtonOpenHighScores
-
- ButtonParent - Class in gui.view
-
Abstract class to implement JavaFX Buttons
- ButtonParent(IScreenController, String, String) - Constructor for class gui.view.ButtonParent
-
- ButtonPause - Class in gui.view
-
- ButtonPause(IScreenController, String, String) - Constructor for class gui.view.ButtonPause
-
- ButtonPlay - Class in gui.view
-
- ButtonPlay(IScreenController, String, String) - Constructor for class gui.view.ButtonPlay
-
- ButtonRestart - Class in gui.view
-
- ButtonRestart(IScreenController, String, String) - Constructor for class gui.view.ButtonRestart
-
- ButtonReturn - Class in gui.view
-
- ButtonReturn(IScreenController, String, String) - Constructor for class gui.view.ButtonReturn
-
- ButtonSave - Class in gui.view
-
Button to save game
- ButtonSave(IScreenController, String, String) - Constructor for class gui.view.ButtonSave
-
- ButtonSaveGame - Class in gui.view
-
- ButtonSaveGame(IScreenController, String, String) - Constructor for class gui.view.ButtonSaveGame
-
- ButtonSound - Class in gui.view
-
- ButtonSound(IScreenController, String, String) - Constructor for class gui.view.ButtonSound
-
- ButtonSplash - Class in gui.view
-
- ButtonSplash(IScreenController, String, String) - Constructor for class gui.view.ButtonSplash
-
- ButtonSwitch - Class in gui.view
-
- ButtonSwitch(IScreenController, String, String) - Constructor for class gui.view.ButtonSwitch
-
- ButtonUnPause - Class in gui.view
-
- ButtonUnPause(IScreenController, String, String) - Constructor for class gui.view.ButtonUnPause
-


BREAKING: Man, 35, dies after being hit by ambulance in early morning crash
Thames Valley Police are investigating the crash, which happened on the A34 in Oxfordshire at around 3.20am today
by Dave BurkeA pedestrian has died after being struck by an ambulance, police in Oxfordshire have said.
The 35-year-old man was killed in a crash at 3.40am today.
In a statement Thames Valley Police said: "Thames Valley Police is investigating a fatal road traffic collision which occurred on the A34 in Oxfordshire.
"At around 3.20am today (29/11), the force received a report of a collision between an ambulance and a pedestrian on the northbound carriageway of the A34, between the junctions for Peartree and Islip.
"Officers attended the scene where sadly the pedestrian, a man aged 35, had died.
"Next of kin have been made aware and are being supported by specialist officers.
"One lane of the A34 remains closed northbound at this time between Hinksey and Peartree while the road surface repairs are completed."
We'll be bringing you the very latest updates, pictures and video on this breaking news story.
Please check back regularly for updates on this developing story here at Mirror.co.uk .
For the latest news and breaking news visit Mirror.co.uk/news .
Get all the big headlines, pictures, analysis, opinion and video on the stories that matter to you.
Follow us on Twitter @DailyMirror - the official Daily Mirror & Mirror Online Twitter account - real news in real time.
We're also on Facebook /dailymirror - your must-see news, features, videos and pictures throughout the day from the Daily Mirror, Sunday Mirror and Mirror Online.


Vestibulum id ligula porta felis euismod semper. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui. Cras mattis consectetur purus sit amet fermentum. Nullam id dolor id nibh ultricies vehicula ut id elit. Nulla vitae elit libero, a pharetra augue. Cum sociis natoque penatibus et magnis dis parturient montes.
Want these recipes plus many more? Our cookbook is available in our market or online.
Order Our Cook Book Online
888 Rum Soaked Pound Cake
Ingredients:
- 4 cups all purpose flour
- ½ teaspoon baking powder
- 1 lb butter (unsalted, room temp)
- 2 2/3 cup sugar
- 5 eggs
- 1 teaspoons vanilla
- 2 tablespoons 888 rum
Directions:
We make our own vanilla at the farm by scraping a dozen or so vanilla beans, and adding them along with their pods to a quart of vodka. We also have a quart of 888 bourbon and 888 rum, taking up residence on a shelf in the kitchen, both filled with vanilla beans. This very special extract finds its way into many of our baked goods as well as various salads and an occasional, celebratory glass.
For this cake, we use the vanilla infused rum for both the cake batter and the simple syrup to soak the cake in just as it comes out of the oven.
- Blend all dry ingredients and set aside.
- In a mixing bowl, beat the butter into submission with the sugar until light and fluffy.
- Add the vanilla and rum to the eggs, and mix with a whisk to break yolks and blend.
- Add the egg mixture to the butter and sugar mixture, and blend till well mixed.
- Add the flour mixture, and blend only until well mixed.
- Pour the batter into a prepared bundt or tube pan, and bake in a preheated 350 degree oven for about 55 minutes.
- While the cake is baking, make a mixture of 1/2 cup water, 1/2 cup sugar.
- Bring to a boil, simmer for two to three minutes and set aside.
- Add one quarter cup rum (away from the flame.)
- Let cool to room temp. Pour from hot pan into a shallow dish or clean pan to help cool more quickly.
- When the cake comes out of the oven, use a skewer to poke holes from top to bottom all over the cake. Pour your rummy goodness all over the cake slowly to let it absorb.
- Let your cake sit in the pan for about a half an hour to absorb all of the syrup, then turn out onto a plate. A deeper dish or plate with a slight edge will help keep all the glorious rum syrup where it belongs!
Enjoy!
×


About
Welcome! Thomas Phan is a Software Engineer based in Washington. He graduated from the University of Central Florida with a B.S. in Computer Engineer, and has four years of coding experience in embedded applications while working at Lockheed Martin. Now, he is excitedly learning and honing his skills for his new role as a full-stack developer at Microsoft.


“Another Layer” is an augmented reality tool that invites the visitor to scan the painting and explore the underlying layer. Painters usually had different revisions of their paintings before the final version. Through infrared reflectography, the underlying painting can be revealed, however, most of the visitors never know this while they are visiting the museum. “Another Layer” is intended to bring this to the table, and create an interactive and in-depth experience to show the history and the creating process of paintings.
Museums are places of discovery and learning. The AR experience “Another Layer” combines both of these qualities and enhances further exploration in the realm of museums. Through pointing the smartphone directly onto one of the featured paintings, the visitor will experience an augmented version of the painting: underlying drawings, altered details, and sometimes different images appear on top of the original. While the naked eye can only see the first layer of paint, this experience can reveal another layer.
This project is a collaborative project between NYU Museum Studies grad school students and NYU Computer Science “Interactive Computing” course students. Mirabelle Spreckelsen, an NYU first-year graduate school student came up with the initial idea of another layer. She reached out to me and asked for the help of the technical parts. Before we started to build the prototype, we brainstormed the best way for the visitors to interact with the underlying layer, with the current technical limitation. The initial thought was that the camera could identify the painting, and display the layer on the painting. However, from the research that we did, none of the WebAR experience supported the identification of a specific object so far. So we altered the interaction and made it more playful.
For the prototype, we used the black & white marker to replace the painting. By scanning the marker which is placed next to the painting, the user will get the painting on the screen. In case visitors’ interaction will make the painting shaky and unstable, the visitor can click the screen and stabilize the painting. To add more playful interaction, we let the visitor paint on the painting. The underlying layer will show up as the visitor paints.
I used a wrapper of a-frame and p5.js that made by professor Craig Kapp to make the AR prototype with the core function. In the HTML file, I added the marker files and the paintings (original one and the underlying layer) with the a-frame function: a-assets and a-marker. In the JS file, I attached the original painting (a plane) to the marker, then I created an overlay canvas above it. To display the painting in a proper size, I set a maths function that calculates the scaling factor of the painting. I also set the detection for the boundary of the painting. When the visitor started to press the painting, the overlay image will be copied to the mapped position. For the prototype, we tested it on the computer, instead of the phone. For the future development, we will add the touch function to support the phone screen.
The prototype also supports the assistive technology. Brandon Halpin created the sound detection function. The blind can speak the name of the painting, and get the description of the underlying layer. Rebecca Hom made a single website or our project so that people can experience our project while we were presenting it.
< < back to check other projects
back to top


These are the coding and style guidelines that we follow.
docs/
directory.). Pull requests and patches are required to update the documentation accordingly, otherwise the change can not be accepted to the source code.mvn clean verify
or use Travis CI to check the buildBlocks. All statements after if
, for
, while
, do
, … must always be encapsulated in a block with curly braces (even if the block contains one statement):
for (...) {
...
}
If you are wondering why, recall the famous goto bug in Apple’s SSL library.
Comments. Add comments to your code. What is it doing? Add JavaDocs or inherit them by not adding any comments to the methods. Do not automatically generate comments and avoid unnecessary comments like:
i++; // increment by one


The Discord Bot List Vote Webhook Handler
Program Developed by: Saya
The Shipgirl Project
(c) Kancolle for Haruna


| op-definition {rlang} | R Documentation |
The definition operator is typically used in DSL packages like
ggvis
and data.table
. It is also used in the tidyverse as a way
of unquoting names (see nse-force).
is_definition()
returns TRUE
for calls to :=
.
is_formulaish()
returns TRUE
for both formulas and
colon-equals operators.
is_definition(x) new_definition(lhs, rhs, env = caller_env()) is_formulaish(x, scoped = NULL, lhs = NULL)
x |
An object to test. |
lhs, rhs |
Expressions for the LHS and RHS of the definition. |
env |
The evaluation environment bundled with the definition. |
The recommended way to use it is to capture arguments as
expressions or quosures. You can then give a special function
definition for the :=
symbol in an overscope. Note that if you
capture dots with exprs()
or quos()
, you need to disable
interpretation of :=
by setting .unquote_names
to FALSE
.
From rlang and data.table perspectives, this operator is not meant to be evaluated directly at top-level which is why the exported definitions issue an error.
These functions are experimental.
# A predicate is provided to distinguish formulas from the # colon-equals operator: is_definition(quote(a := b)) is_definition(a ~ b) # is_formulaish() tests for both definitions and formulas: is_formulaish(a ~ b) is_formulaish(quote(a := b))


Hirequick
HOME
Registration
Login to Your Profile
Remember me on this computer
Forgot your password?
Click here to reset it
.


A) Normal navigation with click event
B) Insert a composed event "after-click" between "click" and "navigation defaultAction"
C) Insert a defaultAction between "click" and "navigation defaultAction"
Alert BEFORE navigation (check address bar before and after alert)


Mouse Events with MochiKit
For a detailed description of what happens under the hood, check out
mouse_events.js.
View Source: [
index.html |
mouse_events.js |
mouse_events.css
]
Hover, Click, or Scroll In Me:
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page scrolls!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Scroll Me and then the page does not scroll!
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.
Ignore me I just make the page big enough to require scrollbars.


Click on all of the variable occurrences (if any) that are bound to the underlined binding occurrence in the expression below.
Determine the scope of the variable declaration corresponding to the underlined binding occurrence. The bound variables that you are looking for cannot appear outside of this scope.
Remember that binding occurrences for the same variable inside this scope (if any) create holes in it.


Installation
Due to the number of bug fixes and enhancements with components provided in CFMX 6.1, prior versions will not work. If you do have CFMX but not 6.1 or later, it is a free upgrade from 6.0 to 6.1.
The cfcUnit distribution is made up of two parts:
- Core cfcUnit library components (/org/cfcunit/)
- Test runner application files (/cfcunit/)
To deploy cfcUnit, simply unpack the zip file into the webroot. That's it.
If the cfcUnit files have been successfully deployed, you should be able to go right into your browser and open a new test runner. This document assumes that the web site is available at http://localhost. The test runner application can be found at http://localhost/cfcunit. Once you have the test runner up, you want to test the core framework files to make sure they are all working properly. To run the tests, enter "cfcunit.tests.AllTests" into the available text field:
There is a text version of the test runner as well as an html version. The Text Runner will tell you if a test passes or fails, but little else. The HTML Runner on the other hand give much more information about each test's success or failure. Select one or the other and click the button labeled "Run Test". If the tests pass the runner will let you know. If not, then check out the error message and figure out why. Next, run the same tests using the other tests runner to make sure that they both work (for completeness).
If you've gotten this far, congratulations! cfcUnit is now installed and ready to be used. Now lets write some tests.


Summary
Mechanical and civil engineers utilize two- and three-dimensional theories of stress and strain to determine if structural beams will fail. Simple mathematical models can be used to make accurate predictions of failure due to shear, bending, and torsion stresses and due to deflection. Solving beam related problems typically involves integrating discontinuous functions and solving for boundary conditions. The integral calculus and algebra details often hide the trees for the woods. This project is centered around developing a package for SymPy that can be used to model and solve analytical beam problems, without getting bogged down in the mathematical details.
| Theme | Engineering Education | Current Researchers | |
| Last Worked On | August 2019 | Past Researchers | Sampad Saha, Jashanpreet Singh, Ishan Joshi |
| Collaborators | SymPy Developers |
This package has been primarily developed by Google Summer of Code students:
- GSoC 2016 Sampad Kumar Saha (Indian Institute of Technology, Kharagpur)
- Application: https://github.com/sympy/sympy/wiki/GSoC-2016-Application-Sampad-Kumar-Saha:-Singularity-Functions
- Mentors: Jason K. Moore, Sartaj Singh, Ondřej Čertík
- Blog: https://sampadblog.wordpress.com/
- Final report: ?
- GSoC 2018 Jashanpreet Singh (Thapar Institute of Engineering and Technology, India)
- Application: https://github.com/sympy/sympy/wiki/GSoC-2018-Application-Jashanpreet-Singh:-Create-a-Rich-Beam-Solving-System
- Mentors: Arihant Parsoya, Jason K. Moore
- Blog: https://singhjashan.wordpress.com/
- Final report https://github.com/sympy/sympy/wiki/GSoC-2018-Report-Jashanpreet-Singh:-Create-a-Rich-Beam-Solving-System
- GSoC 2019 Ishan Joshi (Netaji Subhas Institute of Technology)
- Application: https://docs.google.com/document/d/1LOtMTr9cCrzQ8_OnKrgkZs8wFS9N9PxlR10h3aKG0jg/edit
- Mentors: Jashanpreet Singh, Yathartha
- Blog: https://ishanaj.wordpress.com/
- Final report https://github.com/sympy/sympy/wiki/GSoC-2019-Final-Report-Ishan-Joshi:-Creating-a-rich-beam-solving-system-and-extending-continuum-mechanics-module


Retry Level
Level:
<
1
>
> Custom Level
Colors:
Single
Double
Overlap
Shape:
Square
Hexagon
Wrapping
Rough Edges
Lock Tiles
Size:
x
Tile Set:
Trypo
Ribbon
Iso
Chaos
Erase Progress
Version 1.5.1
*
what's new
*
source code


Living costs vary by region and the minimum wage is not always sufficient. Clicking on a county will provide a comparison of the local wage indicators.


Government response
Nick Gibb responds to a Telegraph comment piece on the benefit of cadet force units within schools.
Sir
The Coalition Government has already recognised the benefits that the Armed Forces ethos can have in education (Why the military must invade our schools, Telegraph, Comment, July 10).
The values of our Servicemen and women - their belief in self discipline, in teamwork, above all in trying to get the best out of those with whom they work - are exactly those we need to instil in the next generation of young people.
Our work with the charity SkillForce means an extra 100 ex-service personnel are already making a valuable contribution as mentors for young people in challenging schools and communities across England.
We will help service leavers, with the potential to become great teachers, to make the transition to the classroom through the Troops to Teachers programme.
Many independent schools have long benefitted from cadet forces. That is why we have committed to 100 more units by 2015 across the state school sector. More young people from some of the most disadvantaged communities will now benefit from the cadet experience, developing them into well-rounded, accomplished adults.
Yours sincerely
Nick Gibb MP
Schools Minister
Published: 17 July 2012


NFF yet to determine my future, says Rohr
by Kelvin EkereteKelvin Ekerete
Super Eagles coach, Gernot Rohr, has revealed that he is willing to renew his contract with Nigeria but the decision is totally in the hands of his employers.
Rohr has led Nigeria to a bright start in their 2021 Africa Cup of Nations qualifiers topping Group L with wins against Benin and against Lesotho.
The next set of games for Nigeria is billed for August and September 2020 against Sierra Leone and Benin before rounding off the group qualifiers with Lesotho in November same year.
Rohr’s contract is set to expire in June 2020 and it seems the coach might have managed his last game for the Eagles but the Franco-German hopes the team’s good form can continue even when he is gone.
“We have a good team, I enjoy working with this team, we have very good players and with two wins we are progressing,” he told the media after the Eagles 4-2 win over Lesotho in Maseru on Sunday.
“I hope this continues after the end of my contract but for my future, that is in the hands of the officials but I’m not here to talk about that.”
Sports Extra have earlier revealed that the NFF are ready to hand the former Burkina Faso coach a new contract which has also been confirmed by the federation’s president, Amaju Pinnick.
Copyright PUNCH.
All rights reserved. This material, and other digital content on this website, may not be reproduced, published, broadcast, rewritten or redistributed in whole or in part without prior express written permission from PUNCH.
Contact: theeditor@punchng.com


yajsw-stable-13.05
- Update: commons text -> 1.10.0 (CVE-2022-42889)
- Update: commons logging -> 1.2
- Bug: posix: implementation of WIFEXITED/WIFSIGNALED
- Bug: windows: convert env var keys to lower case
yajsw-stable-13.04 July 23rd 2022
- Update: commons configuration -> 2.8.0
- Update: netty -> 4.1.79
- Change: logging restart/shutdown rules
- Bug: posix: use WIFEXITED/WIFSIGNALED
- Bug: posix: service does not automatically start on boot
yajsw-stable-13.03 March 3rd 2022
- Update slf4j: 1.7.30
- Bug: Problem running jboss wildfly with jdk 11
yajsw-stable-13.02 Jan 30th 2022
- Update netty: 4.1.73.Final
- Update groovy: 4.0.0
- Update jna: 5.10.0
- setenv: bat: issue if blank in path
yajsw-beta-13.01 Oct 17th 2021
- Update netty: netty-all-4.1.68.Final
- Update jna: jna-5.9.0
- Update groovy: groovy-4.0.0-beta-1
- Update commons.io: 2.11.0
- java9+: remove warning: "could not find rt.jar"
- Posix: error setting log file umask
- Error parsing java command line
- Error evaluating groovy script in 12.16
- wrapper.ping.timeout = 0 should mean no ping check
yajsw-alpha-13.00 May 13th 2021
- Support for java 8+
- support for running modules (jpms)
- genConfig support for command lines with -p and -m
Notes:
this is the first alpha release to support java 8+ and jpms.
pls test it with your current applications, with java 9+ and modules.
for running a module see jpms support in the documentation
to build yajsw see the note in the documentation.
yajsw-stable-12.16 Apr 19th 2021
- Security update: groovy, velocity, netty, CryptoConstants
-
logging in GInterpolator
-
NPE in DateFileHandler
-
error parsing java command line
- sigar crashes jdk11 -> revert to jna
- bug: groovy script deadlock
yajsw-stable-12.15 Nov 5th 2020
- bug: state change shell script not executed
- new: posix: support for systemd per default @see docs for details.
- bug: posix: use java prop java.home instead of java_home
- new: WRAPPER_MANAGER.keystore(key): access keystore from within the application.
- bug: evaluating property x = ${x} results in recursion overflow
- bug: read-only exception in configuration2.EnvironmentConfiguration @see https://sourceforge.net/p/yajsw/support-requests/38/
- change: use sigar to get subprocess cpu, memory, handles
- change: upgrade vulnerable libs
Note: this is the last release to support java 1.7. The next relase will support JDK8 - JDK 14
yajsw-stable-12.14 June 23 2019
- Tested with java 12 on win 10 and centos 6
- Update to gradle 5.4.1, NOTE: build now requires java 8 for gradle and java 7 for compile
- Upgrade commons: cli 1.4, configurtion2 2.5, io 2.6, lang3 3.9, vfs2 2.3
- Upgrade to latest netty 4.1.36
- Merge commit '4ee1a695981821bf253d70cbc5f566e1161b0bbf'
- Updating static Loggers to use InternalLogger
- Adding Groovy runtime classes with static logging
- Avoid WARNING: An illegal reflective access operation has occurred in
groovy. NOTE: workaround until availability of groovy 3.0.0 where this
should be resolved.
- Upgrade to latest jna 5.3.1
- Upgrade to latest stable groovy-2.5.7
- Bug: random hard kill on restart
- Merge Request #8: Relativize classpath entries wrt working directory
- NOTE: new configuration property: wrapper.java.app.relativize_classpath
yajsw-stable-12.13 Sep 1st 2018
- Change: bash scripts
- Bug: stop app not started
- Change: posix signal: log signal, set default to shutdown on 9, extend docs.
- Bug: remove pid file, velocity syntax
yajsw-stable-12.12 Feb 17th 2018
- Bug: Windows Java 9 won't Run via YAJSW: updated jna
- Bug: UAC elevation doesn't remember setting of wrapper.home: updated setenv.bat
- New:
Removing symbolic links configured by chkconfig: new
configuration properties: chkconfig_start_priority,
chkconfig_stop_priority, updated daemon.vm
- Update: API is Missing an Interface: updated documenation
- Bug: wrapper doesn't delete pidfile
- New: How to rotate and compress logs. new configuration property: wrapper.logfile.compress compress older file when rotating
- Change: Small fixes/improvements to the Bash scripts. thanks to deliriumsky for the patch
- New:
Support for systemd: installDaemonD.sh, installDaemonNoPrivD.sh,
uninstallDaemonD.sh, thanks to deliriumsky for the patch
yajsw-stable-12.11 Oct 10th 2017
- Bug: windows: wrapper.affinity should support up to 64 processors
- Bug: wrong yajsw version logged
yajsw-stable-12.10 Oct 3rd 2017
- New: wrapper.ping.check_ack property for bidirectional ping check
- New: wrapper.delay_shutdown property. Delay shutdown to allow scripts, such as emails to terminate.
- Bug: bad manifest
- Bug: windows: wrapper.affinity should support up to 64 processors
- Bug: NPE when executing shell script
- Bug: Posix: cannot start process if wrapper.java.additional contains blank
- Bug: Cannot start jboss wildfily since 12.09: groovy-patch: disable java logging.
- Change: do not show messages "INFO: lib not found" for extended libs.
yajsw-stable-12.09 Mai 28th 2017
- Change: do not expose internaly required ports to the
network. use localhost loopback. @see:
https://sourceforge.net/p/yajsw/bugs/132/
- Change: tray open console performance.
- Change: upgrade beanutils. @see https://sourceforge.net/p/yajsw/bugs/131/
- Change: jvm controller: ignore key message if we already received correct key.
- Change: update tp netty-all-4.0.47. @see: https://sourceforge.net/p/yajsw/support-requests/25/
- Change: update to groovy-2.4.11 @see https://sourceforge.net/p/yajsw/support-requests/26/
- Bug: communication between wrapper and app is not logged
- Bug: @see https://sourceforge.net/p/yajsw/discussion/810311/thread/4dad0e51/. Update to jna-4.2.2
- Bug: posix JAVA_HOME bug. @see https://sourceforge.net/p/yajsw/patches/12/
yajsw-stable-12.08 January 14th 2017
- Bug: Unix supplemental groups
- Bug: setting jna_tmp has no effect
- Change: update to jna-4.2.2 + aix64 lib
yajsw-beta-12.07 October 23rd 2016
- Bug: Cannot specify colon in wrapper.console.title
- Bug: error in AlphaNumericComparator when sorting parameters and classpath
- Bug: posix: env vars are not inherited by subprocess if created with posix_spawn
- Bug: configuration include does not work
- Bug: configuration does not correctly read lists
- Change: support working dir with non latin chars
- Change: windows: change drive or UNC path when executing batch file
yajsw-beta-12.06 May 8th 2016
- Change: libs: netty-all-4.0.35.Final, commons-cli-1.3.1, commons-collections-3.2.2, commons-configuration2-2.0
- Bug: No application logs on yajsw 11.11 / Ubuntu 14.04
- Bug: Windows 10 DELAYED_AUTO_START
yajsw-beta-12.05 Mars 13th 2016
- Bug: java app arguments bad sort
NOTE: Windows: If you have installed java 8 and an older version on the same machine: set the configuration properties
wrapper.java.command = <full path to java>
wrapper.ntservice.java.command = <full path to java>
yajsw-beta-12.04 Dec 24th 2015
- Bug: windows service: bad quotes in java service command line.
-
Bug: script not executed: too many concurrent executions
- Bug: posix_spawn: application does not set working dir.
- Bug: Windows 10: Exception in service install
- Bug: query daemon must be executed with root priv
- Bug: process does not start if space char in folder or environment
- Bug: Mac OS X Yosemite: service install fails
- Bug: 'java -jar wrapper.jar -c http://../wrapper.conf' throws class not found exception
- Bug: error writing from system tray icon to stdin of wrapped process
- Bug: some pdh should return long instead of int
- New: support app shutdown listener, similar to JSW
- New: keystore function. See documentation for details.
- Change: update to netty 4.0.33 and jna 4.2.1
- Change: fix APL license header, format source, organize imports
yajsw-beta-12.03 October 5th 2015
- Bug: windows service:
add
quotes to java command if it contains blank
-
Bug:
genConfig: error parsing java command line
-
Bug:
JVMController: use parameter instead of fixed timeout when reconnecting
- Bug: wrapper hangs if tray port in use
- Bug: bad quotes in java options
- Bug: Randomly: killed sub-process does not close channel to wrapper thus not allowing restart of application
- Change: Log
an error if folder listing returns null (in java this may be a network
hdd error)
- Change:
update ahessian
- Change:
updated groovy scripts: logging
- Change: property:
wrapper.posix_spawn is now default for all posix OS
- Change: MyFileHandler due to
license conflict
- Change: log if a folder listing
returns null (java: error accessing a network drive)
NOTE: property:
wrapper.posix_spawn is now default for all posix OS
yajsw-beta-12.02 June 23rd 2015
- Bug: posix: when wrapper.app.env is set, "java" is not
found -> changed execve to execvpe
- New: property: wrapper.posix_spawn
: Note: in a next release this property will be set by default and will
override wrapper.fork_hack. This implementation is an adaption from
nuprocess
- New: property: wrapper.posix_vfork
- Change: reverted to netty 4 lib: there are some projects
out there which require java 6.
NOTE: requires java 6 or
higher for both wrapper and wrapped application
yajsw-beta-12.01 April 28th 2015
- Bug: Quotes in java command line
- Bug: multiple bugs in RuntimeJavaMain
- Change: switched from quartz
to yacron4j.
- Change: removed pause from batch files.
- Change: updated groovy and netty libs
- New: Configuration property: wrapper....script.<n>.maxConcInvoc
- New: Support for vfs-dbx
(dropbox). thus command files and automatic updates can be done from
dropbox.
- New: Configuration property: wrapper.debug.level
- New: Configuration property: wrapper.filter.debug.default
- New: Configuration properties: wrapper.wrapperJar,
wrapper.appJar
- New: Configuration property: wrapper.logfile.desc
- Patch:
Make the console output fill the window when resized
- Patch:
Startup under AIX 7.1 fails due to StringIndexOutOfBoundsException
- Patch:
Fix "No such file or directory" error on Mac OSX with Java 1.7
- Patch:
Fix getPid() in MacOSXService
- Patch:
MacOSX: Make sure that install script works on vanila machines (when no
custom services installed yet and directory is not exists)
- Patch:
made sure wrapper works on Mac when installed in directory with spaces
- Patch:
MacOsxService does not append configuration parameters to the execution
command
NOTE: requires
java 7 or higher.
yajsw-alpha-12.00 September 14th 2014
- Bug:
MacOsX - thanks for the patch
- Bug: WrappedRuntimeProcess: sort arguments according to
configuration keys
- Change: update
to latest jars: commons-collections-3.2.1,
commons-configuration-1.10, jna-4.1.0, netty-all-5.0.0.Alpha2-SNAPSHOT,
groovy-all-2.3.0-beta-2
- Change: move
groovy dependency to lib/extended
- Change: do not add passwords to command line of processes
or services
- Change: minor logging changes and other minor
changes.
- Change:
license change - see documentation
- Change: regex in configuration files: switched from jrexx
to dk.brics.automaton. moved
jar to lib/extended. functionality is thus optional. NOTE: regex syntax may have
changed
yajsw-stable-11.11 January 25th 2014
- Bug: on application restart: stream of prev
process is open although new process started.
- Bug:
11.10 zip file incorrect version
- Bug: Linux: quotes and spaces in command line paths
- Bug: Bug: WrappedRuntimeProcess: mkdirs if folder for pid
file does not exist
- Bug: Minor changes in RuntimeJavaMain
- Bug: missing .processTerminated invocation in
WrappedRuntimeProcess
- Bug: NPE when restartGC is set but no no output format is
set.
- Change: logging in gobbler
- New: new: Property wrapper.ntservice.process_priority
yajsw-stable-11.10 January 3rd 2014
- Bug:
Problems with quotes in windows services and if classpath path contains
blank
yajsw-stable-11.09 December 23rd 2013
- New: Property: wrapper.runtime.pidfile:
create a pid file for runtime applications
- New: Property: wrapper.image.javawrapper:
wrap a runtime application with a java application, so that (on
winodws) we can restart the wrapper process and reconnect to the
secondary java wrapper without restarting the native application.
- New: Property wrapper.filter.debug.<trigger
key>=true to enable logging of trigger executions
- New: Property: wrapper.debug.comm:
enable tcp/ip communication trace with wrapped application
- New: Property: wrapper.ntservice.stop_dependency:
Linux stop dependency
- New: source on sourceforge git
- Change: source folder structure
- Change: src folder structure to meet maven requirements.
Gradle build scripts adapted accordingly.
- Change: monitor.gc when wrapper.java.monitor.gc message
template
is not set, but wrapper.java.monitor.gc.restart is set in this case no
gc information is logged to output, but gc data is sent to the
controller.
- Change: app shutdown script: be invoked only once; avoid
triggering of shutdown hook when executing app shutdown script
assume that app shutdown script will stop the process. if not it will
be killed after timeout
- Change: ahessian: (not relevant for yajsw): new: inverse
server rpc.
- Bug:
Searching for 32-bit JVMs on Windows x64
- Bug:
error in mbean objectname when title includes ":"
- Bug:
abs path wrapper.java.classpath with * in linux not working
- Bug:
Linux service scripts not compatible with chkconfig
- Bug:
"Bad substitution" because of not escaped quotes
- Bug: CyclicBufferFileInputStream: probable endless loop
- Bug: Runtime process does not restart when invoked through
a trigger
yajsw-stable-11.08 October 27th 2013
- Bug:
System tray icon on windows 7
- Change:
check java 7 also for wrapped application and system tray icon
- Change:
notify port issues for system tray icon
yajsw-stable-11.07 July 8th 2013
- Bug:
checking java 7
- Bug:
Memory Leak -> update to netty 3.5.6
- Bug: wrapped applications started concurrently may
have the same out_, err_, in_ file names.
- Bug:
Linux: Permission denied since 11.4
- Change:
forward wrapper java options used in the configuration to the wrapped
application
- New:
new property: wrapper.ntservice.reduce_signals
- New: new property: wrapper.console.use_interpolated
- New: new property: wrapper.app.status.log.lines
yajsw-stable-11.06 April 20 2013
- Bug:
Jna tmp folder
- Bug:
yajsw prints wrong version
- Bug: netty: do not use sun.misc.Unsafe,
this may crash the JVM (we do not need high performance)
- Bug:
windows >= vista and java >= 7: check that
java.net.preferIPv4Stack=true is set and set it in the windows batch
file and service command line
- Bug: possible loop in JVMController.processStarted()
- Change: minor changes in WrappedJavaProcess.getDOption(),
WrappedJavaProcess.reconnect()
- New:
new property: wrapper.restart.reload_cache
- New: script: vfsCommandCondition.gv
yajsw-stable-11.05 March 3rd 2013
- Bug:
WrapperJVMMain.WRAPPER_MANAGER.signalStopping() is broken
- Bug: while (true) {wrappedJavaProcess.init();
wrappedJavaProcess.start(); wrappedJavaProcess.stop() } fails to
immediatly stop the application.
- Bug:
NPE in WrapperManagerImpl
- Bug:
[3605341] NoClassDefFoundError:
org/rzo/yajsw/srvmgr/server/Ser
- Change: WrappedProcess.start() now resets the restart
counter.
yajsw-stable-11.04 January 11th 2013
- New: Autoupdate of wrapper and application. see documentation
for details
- New:
command "-rw": remove and wait until the service has been removed.
- New:
property wrapper.logfile.maxdays
- Bug:
Installing a multi-config wrapper as daemon
- Bug:
AIX, FreeBSD: Undefined symbol "stdout", error installing daemon
- Bug:
Mac OS Can't connect to Window
- Bug:
wrapper.app.env broken in 11.03
- Bug:
wrapper.cleanup_tmp not working as supposed
- Bug:
Nested braces / absolute path in wrapper.conf
- Bug:
Changed VFS so that it does not use an xml parser
- Bug: shutdown
wait timeout negative
- Bug:
JarBuilder: Source code discrepancy
- Change: make yajsw less talkative if wrapper.debug is not
set.
NOTE:
meaning of
wrapper.logfile.maxfiles
has changed: if logfile rolling is set to DATE, maxfiles refers to the
number of files per day not the total. Set maxdays to limit the total
number of files.
yajsw-stable-11.03 August 26th 2012
- Bug:
11.02 does not work with Java 1.5
- Bug:
.svn dir in src\ahessian\org\jboss\netty\handler\ipfilter
- Bug:
java.io.IOException: The handle is invalid -> print message
instead of stack trace
- Bug:
configuration file: error evaluating include directives with
env vars.
- Bug:
Problems geting stdout with Solaris 10 sparc:
- Bug:
Windows: totalRAM in WindowsXPSystemInformation
- Bug: commons logging, default (log4j) does not log to file.
- Bug: Error creating wrapper.app.pre.script
- Bug: Application could not restart due to hacker TCP/IP
connection to wrapper controller
- Bug: ahessian may hang similar to
java bug in ReentrantLock
- Change: when setting environment vars: use javas
System.getEnv()
- Change: Executing jar files: classpath from manifest are
added to the classpath of the application.
- New:
wrapper.config.script.<n>
for user defined scripts within the configuration
- New: decode.gv
groovy script for decoding properties within the configuration file
- New: wrapper.script.<n>.<state>:
allow multiple scripts for the same state transition. For compatibility wrapper.script.<state>
will be interpreted as <n> being set to "". Execution
order of the scripts is the alpha-numeric order of <n>
- New:
Unset properties by setting ${return null}
- New:
\r\n line endings: wrapper.logfile.format=LPNTM\r\n
- New: property wrapper.cleanup_tmp
default: true, clean up the tmp folder of err_ ... files at startup.
Note: jna cleans up its files at startup.
- New: property wrapper.tray.spawn_process
yajsw-stable-11.02 June 10th 2012
- Bug:
cmd line config override broken since 10.5
- Bug:
Linux: evaluating wrapper.ntservice.additional
- Bug: same script should not execute concurrently
- Bug:
WRAPPER log rolling doesn't work
- Bug:
rollmode DATE always keeps 10(=wrapper.logfile.maxfiles)
files for every date
- Bug: in stop configuration include of main configuration
must be absolute.
- Bug:
installDaemon.sh not doesn't work
- Bug:
totalRAM() hangs
- New:
wrapper.script.reload allow update of scripts without
restart of wrapper: file changed date is checked before script execution
- New:
wrapper.script.encoding,
wrapper.log.encoding, wrapper.conf.encoding configuration
properties to set the encoding of the script, log and configuration
files.
- New:
wrapper.console.pipestreams
for wrapped java processes: stdout and stderr are streamed to the
wrapper instead of t-ing System.out and System.err
- New: log os, yajsw, jvm versions
- Change: upgraded libraries: configuration-1.8,
netty-3.5.0Beta1, commons-vfs2-2.0, jna-3.4.1
- Change: Separated
Posix and Windows batch files to folders bat and bin !
- Change:
calculate totalRAM/freeRAM only when required.
- Change: build: dependency versions defined in main build
script
yajsw-stable-11.01 April 11th 2012
- Bug:
handling ping timeout, in some cases ping timeout may
trigger too early, ping timeout may result in stop instead of restart.
- Bug: Duplicate
parameters for launched service
- Bug:
Linux: app.wrapper.account doesn't with fork_hack
- Bug:
Linux: wrapper.fork_hack spawns java with wrong jna lib
- Bug: Linux: randomly process will not restart
- Bug:
wrapper.on_exit.1=SHUTDOWN
System.exit(1) does not shutdown wrapper
- Bug:
exception when stopping wrapper console using CNTRL-C
- Change: value for property wrapper.on_exit:
STOP:
will cause the application to stop (note: wrapper will stop depending
on the wrapper.control property), SHUTDOWN:
will stop the application and the wrapper
- Change:
java system property jna.tmpdir
for setting the tmp folder for jna library files.Please refer to the
documentation. wrapper.tmp.path
per default set to jna.tmpdir
- Change: per default tmp files are created in
<yajsw>/tmp
- Change: per default log files are created in
<yajsw>/log
- Change: reworked log file rolling.
- Change:
use wrapper.app.parameter for native exes
- Change:
commandCondition.gv: commands for start/stop of
cyclic thread dump
- Change:
ROLLNUM always appended
to logfile
- Change: Linux: installDaemon.sh, startDaemon.sh,
stopDaemon.sh calls sudo
- New: properties for restarting the application in case of
excessive memory or full scan gc usage: wrapper.java.monitor.gc.threshold,
wrapper.java.monitor.gc.restart,
wrapper.java.monitor.heap.restart
- New:
wrapper.logfile.rollmode= DATE
yajsw-stable-11.0 Februray 22nd 2012
- Bug:
System tray icon causes exception
- Bug:
genConfig: does not handle jdk 6 wildcard in classpath: note: yajsw
handles wild cards differently !
- Bug:
error resolving wild cards in case classpath is "lib/ folder/*"
- Bug:
Specifying java command in environment: better logging if command not
found.
- Bug:
Not equals configuration under Windows and Unix: replaced in unix batches yajsw
with wrapper !!
- Bug: When installing a service "remember" required
environment variables.
- Change:
wrapper.java.customProcName:
if this is an absolute path, the given path is used.
- Change:
wrapper.java.command
must be a file: Windows: if .exe is missing it is automatically
added.
- Change:
Enhanced logging when determining java command.
- Change: update to jna release 3.4.0
- Change: update to netty release 3.3.1
- Change: update to groovy release 1.8.6
- New:
Configuration property wrapper.save_interpolation,
default: value true
- New:
Configuration properties for windows services:
wrapper.ntservice.delayed_autostart, wrapper.ntservice.failure_actions.reset_period,
wrapper.ntservice.failure_actions.reboot_msg, wrapper.ntservice.failure_actions.command, wrapper.ntservice.failure_actions.action, wrapper.ntservice.failure_actions.action_delay
- New:
property wrapper.ntservice.java.command
for running the service wrapper process with a java command different
then wrapper.java.command.
- New: property
wrapper.ntservice.java.customProcName for copying the java
command of the service wrapper process.
NOTE:
JBoss 7: runs
only with java version prior to 6_17 or higher than 7_0.
yajsw-beta-10.12 December 18th 2011
- Bug:
Error evaluating ${...} expressions in configuration. Error installing
daemon on Linux
- Bug:
yajsw-beta-10.11 manifest missing jars. Note: jars moved from
lib/core to lib/extended
yajsw-beta-10.11 November 27th 2011
- Bug:
Jboss 7 startup fails logging initialisation -> do not use
java.util.logging in WrapperJVMMain
- Bug:
Error resolving ".." and "." in wrapper.java.classpath property
- Bug:
Reworked setenv.gv script
- Bug: Error parsing groovy script -> remove
index.list from glazedlist jar file.
- Bug:
PosixService.stop() fixed timeout. thanks to ddahlmann for the patch
- Bug:
maxmemory parameter doesn't work without initmemory
- Change:
Added logging in application scripts
- Change:
Absolute Minimum Files To Run On Windows -> removed unused jar
files, moved jar files to lib/extended
- Change: "Remember" environment variables and system
properties
when installing a service. Up to now only interpolations were
"remembered"
- New:
Interpolated config options become "hard coded" -> new
configuration property: wrapper.save_interpolated,
default value: true
- New: Sample configuration file for oracle odi
- New: Sample configuration file for JBoss 7
- New: Sample script for thread dump on application exit.
yajsw-beta-10.10 October 15th 2011
- Bug: genConfig: error parsing jvm options.
- Bug: process may not restart, if application start fails
after first restart
- Bug: tray icon: possible port leak if connection fails.
- Bug: tray icon: multicast discovery: may cause message
flood if running on multiple computers in a network
- Bug:
windows: install service: bad java exe
- Bug:
application not started on linux: new property: wrapper.fork_hack
- Bug:
Linux: application restarts every 25 days.
- Change: tray icon: windows: close popup menue on mouse
click.
note: java implements this only with awt, not with swing ->
using
jna to listen to mouse events outside java. If anyone knows how to
implement this for linux, pls let me know.
- Change: split ahessian.jar -> ahessian.jar,
hessian4.jar in future these may be extracted to a separate project.
- Change: AbstractWrappedProcess: remove synchronized from
stop(), so we can stop a process while it is restarting/starting.
- New:
added authentication to sendMail script.
- New:
windows: UAC support: WrapperExe: if required, elevate process for
service start, stop, install, remove.
- New: windows: support service installation with
delayed autostart:
wrapper.ntservice.starttype=DELAYED_AUTO_START
- New:
tray icon: property
wrapper.tray.look_and_feel = <L&F full
class name>
- New:
tray icon: display virtual and private memory.
yajsw-beta-10.9 August 14th 2011
- Bug: Corrupt source file in distribution
- Bug: NPE in ahessian.
- Bug:
genConfig: Error parsing -jar with space in jar path.
- Bug: application not restarted on server with high load:
Thread race issue
- Bug:
Linux: genConfig: NPE.
- Bug: class not found exception in applications which use
commons configuration: error in build script
- Bug: error in build script: adjusted dependencies
- Bug:
misspelled "relative" in default configuration.
- Bug: RESTART state change trigger may stop the application
- Bug:
Error in
DateFileHandler.rotateDate() using 24h time
- Bug:
monitor gc: could not find minorGCBean
- Bug:
Windows: missing WrappedProcess.getCluster()
- New: method
WrappedProcess.gc() & gc button in system tray
icon console.
- New: method WrappedProcess.dumpHeap(String
file) & dump heap button in system tray icon
console
- New:
method WrapperJVMMain.WRAPPER_MANAGER.signalStopping(long
waitHint).Thanks to ddahlmann for the patch.
- New:
method WrapperJVMMain.WRAPPER_MANAGER.getProperties().
- New: Windows: method WrapperJVMMain.WRAPPER_MANAGER.getStopReason().
Returns a string indicating why the application is being stopped:
"SERVICE", "COMPUTER", "USER", "PING_TIMEOUT", "RESTART", null. This
method can be called within a shutdown hook of the application.
- New:
Tray Icon: Configuration properties: wrapper.ntservice.autoreport.waitready,
wrapper.tray.text.dialog_exit_tray,
wrapper.tray.text.dialog_stop,
wrapper.tray.text.dialog_restart,
wrapper.tray.text.dialog_exit_wrapper,
wrapper.tray.commands.
Thanks to shacharo for the patch.
- New: Tray Icon: Dialog before stopping
wrapper/application/tray controlled by property: wrapper.tray.dialog.
Default: true
- New: Tray Icon: Script to set tray icon state color
- New:
windows bat: runConsoleW.bat, systemTrayIconW.bat
yajsw-beta-10.8 June 26th 2011
- Bug: Linux:
daemon is not shut down cleanly
- Bug: wrapper.restart.reload_configuration error
on application restart
- Bug: genConfig aborts for "java -jar app.jar"
- New:
Windows Vista and higher: handle session 0 for services: wrapper.ntservice.logon_active_session:
wait for user to logon and logon the application as this user. wrapper.ntservice.desktop:
the name of the desktop for the application. Should be set to WinSta0\\Default.
- New: Configuration property: wrapper.java.monitor.gc,
wrapper.java.monitor.gc.intervall
to print gc logging to System.err
- New: Configuration property: wrapper.filter.missing.autostop.<n>.
Default true. If set to false the trigger will remain active after the
trigger has been activated, resulting in continuous trigger monitoring.
- Change: use commons EnvironmentConfiguration to resolve
environment variables in configuration -> correct handling of
case
under windows.
- Change: systemInformation().totalRAM() hangs on some
machines
-> avoid invocation if configuration does not require RAM
calculation
- Change: win64: got Process.getCommandline to work so we do
not need to call wmi.
- Change: do not replace "\\" by "/" in environment variables.
- Change: newest jna and groovy libraries.
yajsw-beta-10.7 May 21th 2011
- Bug:
Error restarting application when using wrapper.stop.conf
- Bug: Windows: wrapper.java.classpath.5=C:/test/yajsw/lib/core/commons/*.jar
does not resolve files. Issue was: new File("C:").getAbsolutePath()
returns current working dir instead of C:/
- Bug:
Default startup timeout is 15 and not 30 as documented
- Bug:
Linux: Error in environment variable expansion
- Bug: setting wrapper.app.pre_main.script causes
class not found exception
- Bug: wrapper.restart.reload_configuration
does not reload the configuration file.
- Bug: Deadlock if WrappedProcess.start() is called while
process is restarting.
- New: Configuration Properties wrapper.java.monitor.deadlock,
wrapper.java.monitor.heap
for details please refer to the configuration documentation.
- New: Windows: wrapper.console.minimized
for indicating if the console of the application should be minimized at
startup.
yajsw-beta-10.6 March 19th 2011
- Bug:
property should be wrapper.logfile.format
instead of wrapper.logf.format
- Bug:
class cast exception when wrapper.java.app.jar
is set
- Bug:
yajsw exception when using jrockit jvm.
yajsw-beta-10.5 March 6th 2011
This release is dedicated
to
My
Blind Tunes,
my kids' first android app. Please support them by downloading the app
and if you like it by giving them 5 stars rating. Thanks !
- New: logging format: added 'N' option
-> display application name.
- New: one wrapper/service multiple processes: java -jar
wrapper.jar -c conf/p1.conf conf/p2.conf. Service name is
taken from
the first configuration.
- New: maxStartup.gv
sample script to check that application reports startup within a
timeout by printing a "started" messasge on the console.
- New: sample for running eclipse equinox OSGI server with
clean shutdown
- New: maxDuration.gv
sample script for checking that an application does not run longer than
a given duration
- New: gradle
build script for yajsw
- Change: Default logging format: LPNTM
- Change: ahessian and srvmgr now in separate jars.
- Change: reworked logging.
- Change: reworked windows Cluster.java and Pdh.java
- Change: reworked FileUtils moved windows specific code to
os.ms.win32 package
- Change: newest groovy and netty releases.
- Bug:
Windows 2008 handling of user credentials in service
- Bug: groovy script initialization may cause memory leak if
process is restarted often
- Bug:
Windows: Windows Services manager reports error when service stops
- Bug:
Environment variables are not set in application
- Bug:
Linux: GenConfig: command line max 1024
- Bug:
Remove shutdown hooks to avoid memory leaks
- Bug:
In case wrapper.jar.app.jar is set, add the jar to the classpath
yajsw-beta-10.4 October 10th 2010
- Bug:
Win64: Exception when switching application account ->
use newest jna release.
- Bug:
Vista: Wait for service to start before showing "service not started"
- Bug:
Linux: account group not set
- Bug:
Linux: NPE when starting a daemon
- Bug: Thread race condition within the wrapper when
restarting an application.
- Bug:
Ping timeout on Windows 2008
- New:
new configuration property wrapper.app.env.<key>=<value>
for setting application environment variables.
- New:
Windows: WrapperJVMMain.WRAPPER_MANAGER.reportServiceStartup()
and configuration property wrapper.ntservice.autoreport.startup
- New: Tested on Unbutu 10.10 32 and 64 bit, OpenJdk jdk 6
- Change: Windows: configuration file: convert environment
keys to lower case.
- Change: newest netty release.
- Change: ahessian changes for android
- Change: wrapper.daemon.run_level_dir
set to a script in wrapper.conf.default should handle most linux
distros.
- Change: genConfig: do not set user account, since most
users will comment this out.
- Known Issue: Linux: wrapper cannot reconnect to java
application, wrapper file descriptors not closed on fork of application.
yajsw-beta-10.3 July 29th 2010
- Bug: ClasscastException when defining
wrapper.filter.trigger.1=,
wrapper.filter.script.1=,wrapper.filter.action.1=
- Bug: Defining wrapper.filter.trigger.1=x,
wrapper.filter.script.1=, wrapper.filter.trigger.2=x,
wrapper.filter.script.2= will execute only one script
- Bug: Windows Services: under high load, on server reboot,
or on
high value of wrapper.startup.delay, application start may take longer
than windows service timeout -> start application in a separate
thread and return to windows service controller asap
- Bug: under high load on application restart: restart
triggered by
multiple state changes -> supress restart if we are already
restarting.
- Bug: Linux: service does not start at boot
-> exit codes in line with LSB.
On the same occasion: changed posix daemon template to conform to LSB
- Bug: [3011626]
wrapper.script.STOP
doesn't work
- Bug: [3011629]
Windows: service shutdown does not wait for application termination.
- Bug: Exception in CyclicBufferFileInputStream if file is
closed.
- Bug: In case the same filter trigger fires for consecutive
lines, at random the scripts are called with the wrong line.
- Bug: Cannot start application in case main method is
inherited from a super class.
- !! Change: [3011629]
new configuration properties:
wrapper.filter.script.<n>.timeout,
wrapper.script.<state>.timeout.
- Change: updated to newest releases of: groovy, jna, quartz,
velocity
- Change: System tray icon now uses asyncrhonous hessian over
netty and
multicast discovery instead of rmi.
- Change: [3004022]
Linux: a group is defined by setting
wrapper.app.account = <group>\<user> (note:
use \\ in
configuration file). if no group is configured change to
default group of the user.
- !! Change:
Posix: the syntax of wrapper.daemon.run_level_dir has changed: wrapper.daemon.run_level_dir
per default ist set to <wrapper.daemon.dir>/rcX.d,
for Ubuntu this property should be set to /etc/rcX.d.
- !! Change:
Posix: the property wrapper.daemon.k_order
has been removed. Use wrapper.daemon.update_rc instead.
- !! New:
Posix: wrapper.daemon.update_rc property for defining start and
stop run levels. Syntax is similar to the update-rc.d
command. Default value is the default of that command.
- New:
System tray icon console: pause, clear & filter
console output.
- New: wrapper.filter.trigger.1=x,
wrapper.filter.script.1=, wrapper.filter.trigger.2=x,
wrapper.filter.script.2= will execute scripts and actions in
alpha-numeric order of trigger key (<n>) thus
allowing one to define the order in which scripts are invoked for the
same trigger or for the same state change.
yajsw-beta-10.2 April 12th 2010
- Bug: genConfig: generating configuration file for "java
-jar x.jar"
- Bug: Windows: when server is under high load: cannot stop
wrapped process: isRunning() returns true although process is stopped
- Bug: sendMail.gv: add try/catch - thanks to jeff 303 for
the patch
- !! Bug: since beta 10.1: Socket.ReuseAddress(true) in
wrapper -> multiple wrappers use same port.
- Bug: Mac OS X: genConfig uses posix methods instead of BSD.
- Bug: Mac OS X: socket exception when restarting
application. -> keep wrapper server socket bound on restart.
- Changed: removed counter in WrapperManagerImpl.
Now waiting until startup timeout.
- Changed: logging in WrapperManagerImpl if wrapper.debug=true
- Changed: extended JSW migration guide to include
environment variables
- New: experimental - multicast discovery: service manager
client
can discover service manager servers and the port on which they are
listening.
- New: sample configurations for activemq and jboss
- New: configuration property wrapper.java.debug.port
-> sets the java -Xdebug ... property and overrides
timeouts to maximum value
- New: configuration property wrapper.jmx.user, wrapper.jmx.password
-> sets the credentials for remote access to the wrapper jmx
server
- New: included sample security profile file. Fine grained
security profile can be generated using src\build\secmanager.
- New: wrapper.app.pre_main.script:
script executed before the
main method is invoked but after the WrapperManager has been configured
and a connection has been established to the wrapper.
yajsw-beta-10.1 February 20th 2010
- Bug: Windows: JVM crashed when getting process environment
- Bug: ServiceManagerServer: minor bugs.
- Bug: Linux genConfig: NullPointerException getting
classpath from environment
- Bug: Linux: Classpath File not found
- Change: Network Install: can use yajsw zip from sourceforge
- Change: Hessian Android-able, first step to service manager
client on android -> removed hessian.jar from lib folder
yajsw-beta-10.0 February 7th 2010
- Bug: genconfig : error parsing java command line
- Bug: Exception in VFS due to
DocumentBuilderFactory.newInstance(), when xerces is available in a jar
manifest but not in classpath
- Bug: genConfig: get CLASSPATH from process environment
- Bug: [2931270] Linux daemon only stops
after timeout expired
- Bug: Linux: File handlers not closed: handlers and pipes
are now closed
- Bug: Linux: ConnectionRefusedException on application
restart
- Bug: In case of gobler panic: do not restart if already in
restart state.
- Bug: Gobler checks old process -> used process id
- Bug: Linux: classpath wildcard error when path is absolute
- Change: WrappedProcess.stop(): stop process if process is
in state RESTART.
- Change: [2910062]move println to logging. Thanks to lokman
for the patch.
- New: ServicesManager client + server - prototype windows
only
- New: network loading: can load a zip -> does not
required webdav. Demo changed to run from yajsw.sourceforge.net
yajsw-alpha-9.5 November 24th 2010
- Bug: Posix: pid file location
- Bug: genConfig:
-Xms512m -Xmx1024m
-XX:MaxPermSize=256m not parsed correctly
- Bug: MacOsX fork process
- Bug: "operation on non socket" error on windows ->
switched
from mina to netty, so that we can use OIO
instead of NIO. Added HANDLE_FLAG_PROTECT_FROM_CLOSE in
WindowsXPProcess.start(). This seems to help, but do not ask me why.
- Bug: Since 9.4: error using commons Configuration in java
application. -> split wrapper.jar in 2 jars:
wrapper.jar,
wrapperApp.jar.
- Bug: Windows: service does not stop when application stops
- Bug: Restart native application
- Bug: Solaris installDaemon
- Bug: [2875747] Posix: wrapper.shutdown.timeout has no effect
- Bug: Posix: systemTrayIcon: start daemon -> daemon
may hang:
tray icon should not start a sub process but call
<link>
start
- Bug: Stack overflow in CyclicBufferFilePrintStream in case
wrapper is slower than application.
- Bug: [892090] Enabling the tray icon is broken and not well
documented
- Change: Posix: added conf/pid/description to daemon script
header
- Change: optimized CyclicFileBuffer
- Change: [2897101] Posix: multiple daemon run
levels: wrapper.daemon.run_level_dir.<n>, wrapper.daemon.k_order.<n>, wrapper.daemon.s_order.<n>
for same <n> a k or s link is created in the given folder.
- Change: newest jna.jar and groovy.jar
- Change: genConfig: rewrite parsing java command line
-> tools.jar no longer required.
- Change: restructured src folder
- New: property to check how often a message must appear on
the screen within a time period: wrapper.filter.missing.trigger.<n>=poll
sucsessfull, 1, 10
- New: property to define a script for calculation of restart
delay. wrapper.restart.delay.script.
Thus restart delay can be set for example to a linear function, or to
check availability of resources before restarting.
- New: property to set a pre application script which is
executed
within the wrapped application before the main method is executed: wrapper.app.pre.script.
This can be used to define network printers and disks before starting a
service.
- New: Windows Cluster: New method process.cluster.groupInfo:
returns a Map<String, String> with <group-name,
current-node-of-group>. One may thus start/stop the
application
when specific cluster groups change.
- New: Java Web Start support: boot wrapper through java web
start
- New: enabled multiple commands: java -jar wrapper.jar -ity
<conf> : install, start service and start tray icon.
NOTE:
take care when building wrapper.jar, wrapperApp.jar, wrapperWS.jar:
wrapper.jar
should not
include the classes: ...yajsw.app.*
except for *Impl*.
wrapperApp.jar
includes
only the classes ...yajsw.app.* + ...yajsw.boot.*
except for *Impl*
both have the same manifest.
wrapperWS.jar is built by running the class WebStartBooter with JVM
option -verbose:class and using JarBuilder (see src/builder/...). This
jar has to be signed. You may use build/sign.bat for this.
yajsw-alpha-9.4 September 20 2009
- Bug: NPE in WindowsXPProcess.kill
- Bug: windows: user account/password
- Bug: win64 reconnect: getting command line NPE in case
server is overloaded
- Bug: MacOsX: launchd typo
- Bug: endless loop in CyclicFileBuffer
- Bug: windows: service description corrupt
- Change: newest mina.jar and jna.jar
- New: loglevel STATUS, but log first 20 lines of app output
to see if something went wrong during startup.
- New: unit tests using testNG and Groovy and jmock
- New: groovy scripting in wrapper configuration ->
groovy jar now part of core libs
- New: enter passwords through CLI or system tray icon
NOTE: this release is buggy on MacOsX this will be solved in a next
release
yajsw-alpha-9.3 August 28 2009
- Bug: do not log restart when stopping service
- Bug: Windows: time out on service stop
- Bug: Remote Launch: /x/x could not be copied
- Change: service install: if service is already installed
uninstall it first then reinstall it
- Change: System Tray Icon now runs in a separate process.
New: Buttons for: stop wrapper, start service, wrapper thread dump
- Change: Remote Launch: allow /**/ pattern in path for
recursive folder download
- Change: JVMController: logging changed to info.
- Change: avoid jna multiple loading of same library
- New: cofiguration sample for Apache Derby
yajsw-alpha-9.2 August 20 2009
- Bug: wrapper hangs on cntrl-c
- Bug: network launch: webdav does not work -> new
configuration-snapshot jar
- Bug: network launch: handling of wild cards reworked. For
now supporting: .../*/*.jar only to one level.
- Bug: service wrapper stops before application if condition
script is active
- Bug: allow stopper configuration to set its own logging
properties
- Bug: system tray hangs on wrapper exit
- Change: jackrabit jar now includes only the webdav client
- New: network launching demo: remote launch tomcat
yajsw-alpha-9.1 July 28 2009
- Bug: vfs-snapshot, configuration-snapshot jars built with
jdk 1.6 instead of jdk 1.5
- Bug: [2828484] wrapper.java.initmemory.relative
yajsw-alpha-9.0 July 26 2009
- New: enable platform dependent includes:
include=${<system-prop>}.x.conf
- New:
wrapper.restart.reload_configuration
- New: Experimental: support jnlp similar
configuration: wrapper.codebase,
wrapper.cache,
wrapper.cache.local, wrapper.resource.<n>
- New: Support JNLP configuration
- New: support remote configuration file
- New: wrapper.startup.delay
- Bug: Windows:
Handle leak on native application restart
- Bug: genConfig throws Exception when java command contains
main args
- Bug: ubuntu 9.04-x86 crash in genConfig.sh
- Bug: when wrapper.control = TIGHT, do not stop application
on JVMMain.WRAPPER_MANAGER.restart()
- Bug: Windows: service requires long time to stop, since
alpha-8.4
- Bug: Windows bat files
- Bug: Posix shell scripts
- Bug: Linux daemon script generation
- Change: genConfig: service name of java application:
console title or main class name.
yajsw-alpha-8.4 June 1st 2009
- Bug: WrappedProcess.reconnect(pid) does not connect
- Bug: WrappedRuntimeProcess: wrapper.working.dir not set
- Bug: Exception on restart due to ping timeout
- Bug: call to java "-Ddir=c:\" will cause a parse exception
in the java launcher
- New: wrapper.control
- New: windows cluster aware: wrapper.windows.cluster.script
- Bug: GenConfig: split jvmArgs so that we can quote them
yajsw-alpha-8.3 May 4th 2009
- New: property wrapper.ntservice.additional.<n>
for setting service wrapper java options, generally this would be for
setting -Xmx
- New: property wrapper.exit_on_main_exception
for setting exit code of java application in case the main method
throws an exception
- Bug: wrapping groovy scripts.
- New: groovified YAJSW : WrapperBuilder
- New: Sample: nutch recrawl script, nutch solr crawl script
- Bug: Windows: on shutdown of wrapper jna
DeleteNativeLibrary exec may hang -> do not spwan this exec.
- Bug: wrapper.java.classpath.<n> = ${var}
not expanded
- Bug: replace out.print with log.info
yajsw-alpha-8.2 April 16th 2009
- New: Property wrapper.java.dump.override
= true : Output thread dump to the wrapper tee stream,
thus overriding any streams set with System.setErr()
- Bug: threaddump with backlog appender
- Bug: space in application jar path
yajsw-alpha-8.1 April 14th 2009
- Bug: Windows: avoid double quotes in command line when
starting a process or installing a service
- Bug: Windows: error in case classpath file has absolute
path.
- New: divided <yajsw>/lib directory to sub
directories. see here.
-> Allow for more compact
distributions
- Bug: thread dump: use "original" stream to bypass logger
streams.
yajsw-alpha-8.0 April 11th 2009
- NEW: configuration property wrapper.script.<state> wrapper.script.<state>
.args
- NEW : State SHUTDOWN
- NEW: configuration property wrapper.port, wrapper.port.min,
wrapper.port.max
- Bug: Posix, Windows: handling of spaces in path
- NEW: support for FreeBSD 32 and 64
- Change:
DEFAULT_EXIT_ON_MAIN_TERMINATE
= -1 for compatibility with JSW
- NEW: Linux, Solaris: System Tray Console: display threads,
cpu, memory, handles (handles == number of file descriptors)
- NEW: commandCondition.gv script
- NEW: runScript.bat to test scripts
- Change: Install Service:
"remember" the lookup variables (eg ${..}) so we run the service with
the same environment variables as those used when the service was
installed -> when an env var is changed the service has to be
reinstalled.
- Change: wrapper.java.command: first check if this
is relative to wrapper.jar parent folder (eg wrapper home), thus
defining wrapper.java.command=jre/bin/java will resolve to
<yajsw>/jre/bin/java if this file exists
yajsw-alpha-7.1 March 22nd 2009
- NOTE:
WrapperExe now sets its working dir -> may require change in
configuration if files are relative (example: use scripts/sendMail.gv
instead of ../scripts/sendMail.gv)
- Bug: Linux: + MacOsX: missing templates folder + templates
folder not used
- Bug: WindowsXPProcess: Exception while reading console
title under SYSTEM user
- Bug: wrong state of WrappedProcess in case process does not
start.
- Tested: Linux 64 bit (Suse 11.1 64 bit) :OK
- Tested: FreeBSD 32 bit (FreeBSD 7.1) : OK (note: does not
yet run on FreeBSD 64 bit)
- Bug: missing src folder
- Change: check arguments in groovy scripts
- Bug: parse trigger configuration properties.
- Change: package refactoring for BSD + MacOsX
- Tested: Oracle/JRockit JVM on Win32 : OK
- Change: add log to groovy scripts - see example in
sendMail.gv
- Change: log groovy script exceptions, so we may have these
on file.
- Change:
wrapper working directory: executing runConsole or startService or
startDaemon should work with the same configuration even if files are
relative -> set working directory of WrapperExe and
WrapperMainService* to the wrapper home directory (the location of
wrapper.jar)
- New:
Alpha Release for solaris. Tested runConsole with sol-10-u6-ga1-x86.
Note: could not get stdout/in/err -> workaround using default
file
numbers 0, 1, 2. genConfig + Daemon not yet tested.
yajsw-alpha-7.0 Feb 28th 2009
- New:
Initial Mac OS X support, Note: wrapper runs only with JDK 1.5 (32 bit)
Application may run on JDK 1.6 (64 bit), still buggy, no system tray
support
- Bug: Linux: daemon.vm
- New: Mac OS X:
wrapper.launchd.dir, wrapper.launchd.template properties
- Change: daemon.vm template and launchd.plist.vm
now in directory templates.
- Bug: Windows: Handle, thread, file, memory leak when
restarting process
- New:
Extended System Tray to include application and wrapper status,
application resources (currently only winodws), writing to System.in (
currently only standard ascii characters)
- New: full win64 support (tested on Windows 2003 x64).
Wrapper and Application may run on 64 bit jdk.
- Bug: TeeInputStream.
- Change: switched to MINA 2.0.0-M4 -> use Timer
instead of KeepAliveFilter
- Bug: Thread leak
- Change: reworked linux scripts
- Bug: class loading : slf4j issue
- Bug: Linux: System.out hangs
- Change:
wrapper.console.visible: default: false
- Change: using Cycler (Thread.sleep) instead of
Timer, so we are not influenced by system time changes.
- Change: pinger Thread with high priority, so we do not miss
pings.
- Bug: short living applications state remains running
yajsw-alpha-6.0 January 5th, 2009
- New: property wrapper.groovy:
wrap groovy scripts
- New: property wrapper.stop.conf
: stop a wrapped application by invoking another application
- Change: genConfig: paths in generated configuration are now
realtive to workingDir.
- New: script for sending SNMP traps
- New:
Linux:
properties wrapper.daemon.run_level_dir, wrapper.daemon.k_order,
wrapper.daemon.s_order.
wrapper -i now installs symbolic links to
daemon script
- New: property wrapper.ntservice.starttype, wrapper.ntservice.account, wrapper.ntservice.password
- Change: Linux: default pid dir: /var/run
- New:
property wrapper.app.account
and wrapper.app.password
Is
used for Linux and Windows. It is used for nt services, posix daemons,
and console applications.
- Bug: file conf/daemon.gv missing in alpha-5.1
- New: property wrapper.tray,
wrapper.tray.icon : enable system tray icon.
- New: script for displaying tray messages
- New: properties wrapper.java.maxmemory,
wrapper.java.maxmemory.relative, wrapper.java.initialmemory,
wrapper.java.initialmemory.relative
- Bug: Linux: spaces in command line calling application
removed.
- New: genConfig: get application account
- Change: Log file: directory is created if it does not exist
yajsw-alpha-5.1 December 22, 2008
- Bug: genConfig.bat and genConfig.sh
yajsw-alpha-5.0 December 21, 2008
- New: groovy scripts can now be passed arguments from the
wrapper configuration properties
- New:
condition scripts for controlling process execution through conditions
such as time interval, file existence, mail receiption etc.
- New: groovy scripts maintain their bindings between
invocations
- New: -q, -qs options for service status query
- Linux: configuration generator now available for Linux
- Linux:
java -jar wrapper.jar options -i (install) -t (start) -s(stop) -q/-qs
(query) are now available for Linux and Windows.
- -i creates a script for starting a wrapper daemon and
copies the file to /etc/init.d
- -t starts the daemon
- -s stops the daemon
- -u removes the script from the daemon dir.
- New: STATE_ABORT: in case the process could not be started
after max_failed_invocations.
yajsw-alpha-4.0 November 16 2008
- New:
Configuration Generator, Given the pid of a running process, generate a
configuration file to wrap the process (currently available only for
win32)
- New: JMX support
- Resolved bug with wrapper.tmp.path
yajsw-alpha-3.1 November 5 2008
- Resolved bug with wrapper.timer.cron
yajsw-alpha-3.0 November 2 2008
- repackaged source code, renamed some classes. NOTE:
org.rzo.yajsw.WrapperMain ->
org.rzo.yajsw.app.WrapperJVMMain
- added support for wrapping native exes. Restriction: cannot
reconnect to native exes.
- added support for Linux. The following functions are not
yet available for Linux: visible console, automatic install of daemons
- This version is stable on Windows and is being used in
production on win32 and win64
yajsw-alpha-2.0 August 20 2008
- Regular Expressions Filters
- Groovy and Shell Script actions
- Sample Groovy script for sending emails
- Job Scheduling with Quartz
- Windows services now bug free
- -Xrs is inherited to sub-processes if running as service
- Cpu affinity and process priority
- Automatic JVM selection
- Separate class loading for YAJSW libraries and for JVM
Application
yajsw-alpha-1.0 April 14 2008
Initial release
This Alpha 1.0 Release is a proof of concept implementing only the main
functions and configuration properties.