Doorgaan naar hoofdcontent

Windows batch scripting god ( java runtime switch)

 I am a batch scripting god.

After a lot of pain, I managed to create a script which allows me to switch jvm's easily.

For posterity, and my own flex skills, the script:

@echo off
rem set your local path to all the JVM's here.
set jvmdir=c:\code\apps\jvms
if NOT EXIST %jvmdir% goto invaliddir

rem a little bit of manipulation
rem first we remove everything before the jvms dir
call set __temp=%%path:*%jvmdir%\=%%
rem then we determine everything that follows after the next slash
set __lastbit=%__temp:*\=%
rem then we remove that lastbit, leaving only the entire directory and a \ at the end.
call set __currentpath=%%__temp:%__lastbit%=%%
rem then we remove the \ at the end
set __currentjvm=%__currentpath:\=%

if "%~1"=="" goto missingarg
if NOT EXIST %jvmdir%\%1 goto unknowndir


set __currentpath=%jvmdir%\%__currentjvm%
set __replacement=%jvmdir%\%1

call SET path=%%path:%__currentpath%=%__replacement%%%
CALL SET JAVA_HOME=%%JAVA_HOME:%__currentpath%=%__replacement%%%

echo Set path and java home to %1
goto :complete

:missingarg
echo.
echo --^> ERROR!! : Missing argument, which needs to be the jvm directory (%jvmdir%)
echo.
echo Valid dirs:
echo ----------
dir /b /ad %jvmdir%
echo.
echo Current dir: %__currentjvm%

goto complete

:invaliddir
echo.
echo --^> ERROR !! : Setup invalid, we should have a jvmdir but %jvmdir% was not found!
echo.
goto complete

:unknowndir
echo.
echo --^> ERROR !! : Unknown java directory %1, not found in %jvmdir%
echo.
echo Valid dirs:
echo ----------
dir /b /ad %jvmdir%
echo.
:complete
:complete

Reacties

Populaire posts van deze blog

Spring's conditional annotation with properties

Spring has a nice @Conditional annotation, to have the option to have beans be available in the context depending a specific condition (Of course, this can also be realized by using @Configuration objects, but that's a different post). Ideally, we'd have the option to have a condition evaluate to true or false depending on a property. Sadly, Spring does not support that out of the box. Googling and looking around gives a partial solution, but the complete one here, so we won't forget: /** * Components annotated with ConditionalOnProperty will be registered in the spring context depending on the value of a * property defined in the propertiesBeanName properties Bean. */ @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Conditional(OnPropertyCondition.class) public @interface ConditionalOnProperty { /** * The name of the property. If not found, it will evaluate to false. */ String value(); /** * if the p...

OSGI insights without sonar

So I was on a project without sonar. Oh my. Well, it was an OSGI project, so the problems couldn't be that bad, right? But how good were they (and what things were bad?) I found Stan4j , a code analysis tool for eclipse, which draws nice graphs and can handle osgi pretty well it seems. Now I can see that dependencies/bundle names aren't properly aligned (even though OSGI doesn't complain), etc.

JPA and transactions

So I was working with JPA and transactions. Consider the following: In bean 1, with implicit TX 1, managed entities are loaded/created,and returned in bean 2, with implicit TX 2, entities are modified in bean 3, with NO TX, bean 1 is called, and the results are passed to bean 2. and bean 4 is similar to bean 3, but with it's own transaction, TX3 What happens when bean 3 finishes: are the entities updated? What happens when bean 4 finishes, are the entities updated? The answer to this is simple; entities are managed through a persistance context. That context is tied to the transaction. So in bean 2, there is a difference. When called from bean 3, it runs in a different transaction then bean 1, and thus a different persistance context, and thus the entities are not managed 'by this transaction'.When called from bean 4, it all runs in the same transaction, TX3, and the results are persisted.