Wednesday 19 December 2007

Find the bad EJB... if you can!

If you misconfigure the sun-ejb-jar.xml, you get a message like:

"com.sun.enterprise.deployment.backend.IASDeploymentException: Error loading deployment descriptors for module [xxx] -- This ejb has no message destination reference by the name NNNN
...
<lots of stack trace>"

with no mention of the name of the EJB that is misconfigured.

Thank you Glassfish!

Friday 7 December 2007

Unable to proxy datasources

In the DataSourceObjectBuilder , the code, given an XADataSource interface, look at the implementation class and call methods that are not part of the interface, using reflection.

This means its not possible to pass in a dynamic proxy or indeed any actual interface...

take a look here:

Friday 7 September 2007

Almost impossible to configure in read-only filesystem

A common requirement for enterprise applications is to be able to deploy into read-only partitions. This is so that no user can change any aspect of the deployed application without following a strict change procedure.

However - glassfish requires so many directories to be read/write that it becomes extremely difficult to deploy in this manner.

What is needed is a clear separation of "fixed" directories - that will never change once an application has been deployed - and "working" directories that contain dynamic data (session information / unpacked ear files / whatever )

Currently glassfish has a complete mis mash.

hence its crap.

hosted on collabnet

this is a mini piece of crap - but seriously CollabNet - the "enterprise" project hosting company.

everything is super secure ssl - just what you need to browse some turgid java shite.

good job its all running on ZX Spectrums too - just to enhance that browsing experience.

perhaps those chaps at collabnet could take a look at http://www.foundrynet.com/products/app-switch/10g-systems/si-gtc-10gx2p.html to speed some of that crap up...

also - top class support for the enterprise - by using CVS (an outdated and cobbled together bunch of shitey shell scripts reimplemented in C) - you completely guarantee that nobody in an enterprise organisation will be able to download your code - as they are behind a web proxy - which CVS doesn't support. good technology choice.

Next: ProcessLauncher (again)....

Thursday 6 September 2007

ProcessLauncher

just what is it?

it reads and parses config/asenv.sh? to figure out what to put in a command line?

have you seen the code?

config directory needs to be writable!

or at least you need to create some writable files in it:

domain-registry
admsn
secure.seed
derby.log
admch

all live in the "config" directory - despite the fact that they are dynamic files that need to be updated each time the server starts.

sweet.

if the developers of glassfish knew anything about SOX or enterprise deployment they might figure out that having writable config directories is NOT THAT GREAT.

startserv doesn't

you've downloaded the latest version. want to start it? don't want to use asadmin? (find out why in a later post)

try the "startserv" command.

pity it doesn't work.

it has the -Dcom.sun.aas.promptForIdentity=true flag set, which means that is should prompt you for its login password. But it will only do that if you're redirecting from a file anyway.

So here is startserv in all its glory:

$ domains/itscrap/bin/startserv


erm thats it - it waits for ever!

Now lets try 'unattended mode'

$ cat /tmp/shit | domains/itscrap/bin/startserv
Redirecting output to /someplace/logs/server.log
Enter Admin User:
Enter Admin Password:
Enter Master Password:
Enter Other Password Information (or ctrl-D or ctrl-Z):
$

Great- prompt when not needed!

Lets take a look at ProcessLauncher.java (line 369)

// See is there is input that needs to be sent to the process
if (System.getProperty(PROPMPT_FOR_IDENTITY_SYSTEM_PROPERTY) != null && action.equals(LAUNCHER_START_ACTION)) {
sendInputToProcessInput(System.in, process);
}


Brilliant! - so even if we set PROPMPT_FOR_IDENTITY_SYSTEM_PROPERTY (sic) to false it still will so the wrong thing.