12/19/08

Client's transaction aborted

I've met the above error message using a Wicket 1.2 / EJB3 intranet application under Glassfish v2.
Here is the more particular head of the stack trace:

javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted
at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:3394)
at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:3274)
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1244)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:195)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)

This exception raised on the integration server sometimes, randomly, for simple page fetch operations. After pressing reload on the browser, the operation was usually successful. I couldn't reproduce the failure on the local machine where I regularly restart the app server and have run some tiny applications only beside the subject one.

After some hours code bugging I'd found a forum message which gave me an idea to play some rounds with the Glassfish's HTTP Service configuration. Maybe not my EJB logic is buggy or misconfigured but the client web application causes the error somehow. Unfortunately I couldn't quarry anything regarding this from the default server logs.

Finally I tried the following on the Glassfish admin console which solved the problem as a symptomatic treatment:
Configuration > HTTP Service > RequestProcessing > Thread Count (set a higher value, the default is 5. 10 is worked for me.)

It seems to be working now.

12/10/08

Eclipse DemoCamp Budapest

This year I also couldn't get to any of the heavy European Java conferences, so I stayed at visiting some tiny local events intown. For example last week I attended on the Eclipse DemoCamp Budapest which was organized by the right engaging b2i local team at a pleasant (but not too silent) downtown pub.

Around 20 participant were present and there were two presentations, or rather demos planned. When people entered they were asked if they had some interesting subject to speak about, so the whole thing had an unconference style. FOT Testing Services guys actually had a notebook with a copy of their recent project so they took the opportunity to introduce it to the public.

First demo was about making a generic data model with EMF (Eclipse Modeling Framework) plugin and creating a model editor with Eclipse GMF (Graphical Modeling Framework) which is given by GEF (Graphical Editing Framework). The example model was a basic CD database.

With suitable experiences, it takes about 10-20 minutes to create a comfortable class diagram-like Eclipse-based graphical editor for a data model with the same complexity. b2i assembled a complex healthcare system model and editor in six months as they said. (I don't know how many people, I guess 2-4.) It's worth considering to use these tools in case of a similar proposition.

Second demo was about testing banking applications with Eclipse environment (FOT Testing Services) with their plugin set. There were green and red strikes, an imitation of the GUI of the banking application for testing, report generation tools and much more. People with

Third demo was about Eclipse tips and tricks. A guy showed a number of smart keyboard shortcuts and useful functions. Most of us know most funtions so I observed that the average knowledge was rather high.

After that, or rather during the last demo, the event slightly turned into a drinking party. Unfortunately I had to leave but I decided to be there at the next occassion, maybe in next Juny or so.

8/7/08

Cloud Computing

Is it the ultimate innovation or is it the next buzzword managers and sales staff members must record into their notebooks?

After reading some material it doesn't mean more for me than a clustered client-server architecture where processing capacity and memory can be hired and clients are generally web browsers or other applications. It's not a big novelty form the developers' point of view so first of all we got a new phrase for the hot water.

Don't mix it with 'grid computing' where real math computations are running on a statically or dynamically built distributed network (SETI@home for an example) and clients are active participants of the process. Instead of this, with cloud computing, you connect to the service and use it. So I don't get again where is the magic. (Maybe the magic is in the ability of obtaining a large amount of personal data and money from the users.) I can imagine an architecture which discovers (sourceforge does this) or even deploys automatically service components geographically closer to the requester. So yes, there can be interesting aspects.

Anyway, we have to learn:
  • Internet, Server (deprecated, past)
  • Cloud Computing (trendy, future)

6/5/08

Setting up EJB3 default interceptor

It wasn't easy to find out how to configure a default interceptor in EJB3 environment.
It's okay to make this snippet into the ejb-jar.xml:

<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>pkg.IC</interceptor-class>
</interceptor-binding>
</assembly-descriptor>

Maybe everybody forget to mention maybe it's a Glassfish V2 trick that I get this error message during deployment:

Interceptor binding contains an interceptor class name = pkg.IC that is not defined as an interceptor

...unless I register the interceptor class itself too with this:

<interceptors>
<interceptor>
<interceptor-class>pkg.IC</interceptor-class>
<around-invoke>
<method-name>call</method-name>
</around-invoke>
</interceptor>
</interceptors>

<interceptors> and <assembly-descriptor> are children of <ejb-jar> element in this order as it seems well in the xsd.

5/6/08

Survey

Some months ago I read an article which said programmers usually do their hobby projects much better than their working projects. There are several reasons like time-pressure, predefined set of useless tools and pointless procedures, rubber specifications etc.

I've made a little survey about that. Do you feel sometimes it would be better to be a shepherd somewhere on a sympathetic highland in, say, Scotland and to forget all office crap? Or do you arrive at yor workplace every morning that you know you will change the world a little, of course in the right direction?

The survey is here at the right. Thank you for giving an answer if you did.

It would be nice to know the distribution of the answers by several categories like programming languages, destination environments, open source and commercial projects, speciality of the projects (banking, science, administration, telecommunications, entertainment, web/publishing), however, this simple survey is not capable for that.

But I have some opinions. It's apparent that open source projects are cooler than commercial ones. Scientific and academic projects must be also nice as they can have much more time for research and development than, let's say, outsourced banking projects where contracting party is generally absolutely disinterested in the question of nice, reusable and well-unit-tested code in contrast with delaying the payment for the software. I don't know what is the situation between programming languages but I think C or C++ programmers on embedded devices make a much more precise work than Java programmers at enterprise projects. Lower-level programming languages need more enthusiasm, higher-level ones are more popular which implies broader distribution in the level of knowledge of the programmers. But these are just thoughts...

Let's see the results at 1st of July.

4/2/08

AppServer Shootout

Recently we organized an AppServer shootout (we call it deatmatch) on our local Java User Meeting. The three contestants would have been Sun's Glassfish v2, Redhat's JBoss and IBM's Geronimo. Unfortunately IBM guy couldn't attend on this event because of other business and JBoss presentation had technical difficulties so we had to do with Glassfish demo. Let's see the 8 tasks:

1. Deploying simple EJB3/JPA webapplication with pre-initialized DB. Checking WSDL as a bonus.

It was easy and elegant. We checked WSDL which was an ugly and large XML but it's been generated automatically. We did a test request by using the Glassfish's admin console. That means we filled an HTML form containing one of the webservice's method's parameters and submitted it.

2. Remote deploy from build script. (Usual development task.)

We did it from Netbeans using Ant and a special Glassfish deploy task. AFAIK hot deploy is also supported by Glassfish when appserver scans a pre-set directory and our task is to plump ear or war file into that place.

3. Changing logging config during runtime.

We did it by using the admin console and logs could be browsed by a fancy HTML table. Severity level of loggers could be set by logger instance as usual. The Test application was Glassfish-friendly because it used Java Util Logging and 'fortunately' Glassfish also supports that (and only that?) logger framework. I think log4j config could had been happened by editing log4j.xml by hand and we had to pass up the fancy HTML log table, nevertheless I would have been happy with that since I prefer anything else than java.util.logging.

4. Remote runtime-debugging of the application.

It was OK, however Glassfish must have been restarted each time before connecting debugger client. As I remember JBoss doesn't need restart when a certain JVM switch is set. Of course it needs when we want to change that switch. We used Netbeans as a debugger client but it would have been anything else, for example Eclipse.

5. Changing data-source.

We expected it won't work without restarting the application and of course it did (not). Other expectation could be against the appserver to not to totally crash down in this case. It didn't crash, just the application started to throw ugly excpetions with long-long stack traces. Changing datasource had been worked after restarting application.

6. Restarting appserver with the application. (How much time does it take?)

We restarted appserver, but unfortunately forgot to measure it with stopwatch. It could have been 10 seconds.

7. Integrating LDAP (if we have time)

Guys started to configure it but there were some technical difficulties. They said usually it can be done in 10 minutes. We wanted to see the stress test so we jumped.

8. Stress test with JMeter

That would have been exciting if we had the other contestant appservers running on the same hardware, unfortunately we had not. However, a plain dual-core notebook could serve 1700 requests per second without tuning, and 2200 with tuning.

Tuning tips we used.
Why didn't we use Apache Benchmark.
We used JMeter.

I'm looking forward to the next occassion where we'll have hopefully other competitors with sharpened environments.

Beyond this appserver stuff, we had a presentation about component models and a BlazeDS, Flex prototype app.

3/7/08

Challenge24 EC

Challenge24 had been started as an internal competition at the local techincal university of Budapest. For now it became an international programming contest which is being organized 8th time this year. The contest itself usually happens in May when teams must be present personally but it's preceeded by a qualifying session (a.k.a Electronic Contest) which has been arranged on the last weekend of February and teams didn't have to be present personally, just to be online.

At Electronic Contest there are up to 8 combinatorical, geometrical, game theorical problems which have to be solved by sending the result files to the central server. Teams are free to choose platform and programming language.

More information including rules, list of teams and their scores, assignment of the Electronic Contest can be found on the homepage. The name is Challenge24, because the main contest in May lasts for 24 hours.

I didn't take part nor this year nor earlier but I usually download and solve some tasks from the Electronic Contest's problem set, just to keep my mind rolling. I need these screwed examples because at work I'm developing administration and web-based software components for business sector where capability of whoomping buzzwords and using the four elementary math operations is rather enough than real thinking and planning.

Sometimes I envy guys who are working on games, 3D engines, embedded devices where the iron is highly finite or anything else than administrative software.

And I'm curious how leader teams are preparing for the competition. I guess they need a very rich algorythm collection, they have to know perfectly the language and the IDE they are using, strong self-confidence is also a must in algorythms but I don't know how deep mathematical knowledge is required. How much counts the targeted knowledge, how much are exercies finger-practices for those who have targeted knowledge, let's say geometrical examples. It would be interesting to know what language and IDE do they use. Do they use mainstream production languages (Java, C#, C++) or use some functional or logic programming languages like Prolog? Do they use artificial intelligence modules?

Who are the leader teams at all? University students? Colleagues in a company? Talent freelancers? It's a pity that challenge24.org doesn't serve a short introduction of the teams. Hey! Write a comment if you know anything abut them. So I don't know anything but it seems something goes very well in Sweeden and Poland.

Congratulations!

3/5/08

JavaPosse Episode 157

Why do I post these? I've been regularly listening these podcasts and sometimes I flag more interesting subjects in order to be able to re-listen them. It's just one step forward to flag *all* main subjects and make it public whether it's useful for others. This one was the latest Episode in 2007 or the first in 2008 depending on the point of view. With this, all tracklists of 2008-episodes are present up to now. Further ones are posted to the JavaPosse Google Group. Henceforward, I plan to write real posts here. :)

Original shownotes and the audible mp3 of the podcast can be found here.
More tracklists can be found here.

00:10 Metal theme, intro
03:40 Announcing JavaPosse Roundup
09:35 'Smart Drink Coasters - Digital Pub' / Is java slow?
14:00 Is java loosing place? Reflecting for weird articles.
21:55 What did you give for Christmas?
31:55 Favourite aspect or moments of the year
33:10 JavaPosse Google Group
41:40 Last year predictions
45:50 Predictions for next year
47:30 Special guests :)
50:10 Winners or loosers
52:20 Happy New Year

2/24/08

JavaPosse Episode 158

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Newcast for January 9th 2008

00:25 Intro (T-shirt is available)
01:44 Roundup - only days left for the early bird price
02:35 Bruce Eckel: should we simply stop adding new features to Java?
17:40 Apple has released an updated developer preview version of Java 6
22:50 Two Professors from NYU have slammed Java as a teaching language
33:20 Scala Roundup
38:00 Library of the week - PDF Renderer
40:30 Up and coming Project of the Week - Mighty Box

Quick News Items

44:00 JSR 271 - The Mobile Information Device Profile 3 (better known as MIDP 3)
44:23 Chris Adamson has issued a call for comments on how java.net might be improved in 2008
44:48 Is Rails a Ghetto?
45:51 Apache Wicket 1.3 has been released
46:09 Motorola has released a new version of the ROKR music playing phone
46:15 JSR 286 - the Java Portlet Specification 2.0
46:33 JSR 255 - JMX (the Java Management Extensions) version 2.0
46:45 JSR 279 - Service Connection API for Java ME
47:12 JSR 235 - Service Data Objects - has been stalled for about 3 years
48:20 Apache Jakarta have released a new version Commons configuration
48:43 There is a new preview version of Oracle JDeveloper 11g available
49:05 Using Erlang (a functional language) and Java together
49:30 Pearson Education held a four day GWT conference in San Francisco
49:50 The NetBeans source code is being moved to Mercurial
50:18 Django is getting very close to running on top of Jython
50:35 NetBeans has once again kicked off it's world tour
51:00 The Java 2 Fifth Edition Complete Reference is now available for free as a PDF download
51:19 Groovy 1.5.1 has been released
51:34 The JDIC project have updated their netbeans plugin for NetBeans 6
51:47 Infoworld reckons that Sun Microsystems is back in the game
52:16 Nominations for the 2008 Eclipse Community Awards are now being accepted
52:43 Jason LaPier has put together a NetBeans cheat sheet for Ruby and Rails development
53:00 Grizzly 1.7 is out
53:20 On a related note, Glassfish v2 update release 1 is also now available
53:30 Metro versions 1.0.1 and 1.1 have been released
53:46 A new version of Excelsior JET is now available
54:09 JRuby 1.1RC1 released

54:20 BluRay Wins?

2/14/08

JavaPosse Episode 163

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found Shownotes.
More tracklists can be found More Tracklists.

00:30 Intro -couple of guests in studio, club feeling, somebody is speaking from the cupboard. Roundup, Sun / MySQL, etc.
17:28 Grails 1.0 released
21:10 Registration for JavaOne is now open
30:25 Closures
38:50 JSF has passed Swing as the number one GUI component model for job demand
42:20 JavaFX update N, reinventing client Java
49:40 Nymbus Look and Feel
52:10 Font rendering

Quick News
64:00 A NetBeans Innovators Grants program has been introduced by Sun
64:50 How to write a full application that uses JSF, Seam 2.0 and JPA together, Carol McDonald's blog
65:26 Duke's Choice Award (deadline is 14th March)
65:40 Opera Mobile
69:37 TheServerSide.com has an introduction to using MapReduce in Java applications
69:58 Sun has released a new version of their Solaris Express Developer Edition
70:57 Sun has also posted a proposed final draft of JSR 293 - Location API 2.0
71:20 Thanks

2/13/08

JavaPosse Episode 162

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Interview with Dalibor Topic about Open JDK, the JCP, Kaffe, Iced Tea and more

00:40 Intro
01:44 About Kaffe project
05:28 What's the current state of Kaffe now?
07:35 Are annotations and generics supported by Kaffe now?
09:15 What were the trade-offs between those two licenses and why did you end up picking the GPL side of the two?
10:45 How difficult is it to hit a moving target like the Java Language Specification in a project like Kaffe?
12:26 What do you think is the future for Kaffe?
14:25 ... Are you seeing now that OpenJDK is open sourced or at least mostly open sourced that it's definitely being picked up from those kind of distributions? (Java in Linux)
16:25 Any other project you are involved? (GNU classpath)
17:20 Dalibor's relationship with OpenJDK.
20:33 The OpenJDK was released under the GPLv2 with the classpath exception. Do you think it was a good choice?
22:10 About Interim Governance Board
24:47 How does this Governance Board relate to the JCP?
26:37 What will happen once the temporary governance board is finished with its work?
28:50 Are you personally interested in serving on the next GB for the OpenJDK meeting ...?
29:45 How much of the current binary ... the Java is carrying can be replaced by stuff out of projects like Iced Tea and do you think that's likely to happen?
31:20 Do you think that JCP is too slow?
32:15 Do you think maybe they should have a little bit more development going on before JSR-s are formed from the ideas?
34:50 Do you think that JCP is dominated by Sun?
40:20 Superpackages vs OSGi (JSR277,JSR294 vs JSR291)
47:50 Thanks

2/11/08

JavaPosse Episode 161

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Open JavaME and JavaSE interviews

00:30 Intro : About roundup signups, skiing, next episode (will be a listener feedback session), etc
05:00 About interview at Sun Java Mobile and Embedded Developer Days
06:10 Sun aquiring MySQL
12:52 Oracle acquiring BEA
17:25 Is the Geronimo in trouble?
20:00 Applet of the Week: Sea Level applets
21:05 Project of the week - LoboBrowser

Quick News
23:43 JDK6u4
24:00 CommunityOne 2008 call for participation
24:38 JavaZone 2008 call for presentations
25:17 Jazoon 08
25:50 EclipseCon
26:21 Artifactory, Maven
26:34 Chris Richardson's blog entry
27:04 JSR 323 - Strong Mobility for Java
27:41 Bill Venners has released a new testing tool - ScalaTest ('JUnit for Scala')
28:06 The Developer.com product awards for 2008 have been announced
28:32 JackRabbit 1.4
28:49 Apache Jakarta Commons Pool 1.4
29:10 Neal Gafter: Java is dead
29:32 Posse listeners in Pune, India
30:02 Apache Lenya 2.0 (Content Management System)
30:26 Sun is holding another Second Life virtual meeting
30:36 Sun's JavaFX tools to interop with Adobe

31:38 An easy-going interview with Roger and Terrence at Sun Java Mobile and Embedded Developer day
32:16 Are You gonna have this scene next year?
35:50 Why hasn't there been an event like this already?
42:40 ...Google's Android is a reflection that so many things in the industry went wrong...
43:00 Some announcements
45:15 One of the big goals of the community...
45:45 Vodafone r&d
46:50 Squack (?) virtual machine is open source
49:10 When the Sun spot blend? (?)
56:10 Thanx

56:45 Outro

2/6/08

JavaPosse Episode 159

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Open source ME and SE interviews

00:30 Intro, background

01:16 Interview with Terence Barr, introduction
02:11 What happened since the announcement of open sourcing JavaME?
03:21 What were the reasons for applying GPLv2 without the classpath exception? Has it turned out to be a good choice in retrospect?
05:53 Had commercial licensees react to the open sourcing of JavaME?
07:42 What the deal is with JavaME CLDC and JavaME CDC? It was reported earlier that CLDC was being killed. What's going on here?
10:02 Have you seen any unusual or unexpected port JavaME since it was open sourced?
12:52 Do you think JavaME development has accelerated as a result of its open sourcing?
14:06 How will the JavaFX script work in JavaME? When will we see FX script running on mobile devices any time soon?
15:45 What's the story with device availability? Are there any devices running CDC yet?
17:16 When we gonna see some MobileFX or JavaFX mobile stuff comeout?
18:15 Why isn't there a mobility pack for Mac OS 10 yet?
20:14 Are there any regrets inside of Sun about open sourcing JavaME?
22:35 Are you still confident we'll see JavaME for Apple iPhone?
24:30 About Java Mobile and Embedded Developer Days.
26:27 Thx

26:43 Interview with Mark Reinhold about state of open source Java and OpenJDK
26:55 Introduction
27:53 A quick update on the state of open sourcing the JDK.
28:41 What is the work remained to be done?
30:11 Do you have any non-Sun regular contributors?
31:10 About moving to Mercurial.
32:10 About governance (?) board.
34:57 Ice Tea project of RedHat
38:25 GPLv2, questions about licesing.
41:08 Have OpenJDK a positive effect on improving the language (Java7)?
43:00 Do you have any personal favourite JSR?
46:40 Are there any regrets inside of Sun from the open sourcing the JDK?
47:20 How do you feel the community building is going around the OpenJDK?
48:45 Are there any other tools for helping the community development efforts?
49:55 Are people each other helping ...
51:50 Thx

53:30 outro

JavaPosse Episode 155

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

00:25 Prologue
00:50 Introducing Martin Odersky
05:14 How long have you been working on Scala?
06:35 Do you think Scala can be a general purpose language?
08:58 Why Scala is a much more practical approach to functional
programming than something like Miranda is?
11:37 What are monets? (?)
13:42 What do you suggest for Java programmers to get started in
Scala? (First steps to Scala)
17:16 Earliest real world examples of Scala usage
20:00 What other applications do you see as perfect fits for Scala?
22:00 Why immutability is kind of that important in functional
languages or Scala?
24:10 About XML 'efficiency' in Java
26:00 What do you think about closures in Java?
28:28 Embedding XML in Scala
30:52 What's your strategy about (backward) compatibility?
34:00 ending

2/5/08

JavaPosse Episode 153

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Newscast for Dec 6th 2007

02:55 NetBeans 6.0 GWT plugin, Scala plugin(s)
09:05 Spring 2.5 has been released
11:25 Applets of the Week: Maths, Physics and Engineering applets
14:30 Android news: Robert Cooper's article
15:20 Carlos Bazarella from Polipus, ME4Android
15:40 OHA member Ascender announced 'Droid Fonts'
16:52 Starting with android. Article from John Lombardo
17:12 AndroidPort - new Google Group
17:22 Karl Pauls of Luminis has managed, to get Apache Felix to work on Android
Quick New Items
17:44 TheServerSide article about RestFaces
18:45 Mark Reinhold, Governance Board
20:00 Think Record Storage
20:30 Atlassian Software has released version 1.2 of Crowd
20:50 The Apache project has released version 1.1 Final of Continuum
21:00 JBoss has released a JSF unit testing tool: JSFUnit
21:46 Project Mojarra
23:46 JSR321 - Trusted Computing API for Java
24:10 Roberto Chinnici blogs that he has got GlassFish v2 running on SoyLatte on Tiger
24:30 DeveloperLife has started a series of tutorials about developing with GWT
25:12 Microsoft released GWT like API
26:10 The third season of Lost on Blu-Ray...
26:55 Sun has announced a new program to compensate Open Source developers for their coding efforts
28:30 JavaRanch has an article about James Gosling's recent "State of the Java Universe" talk
30:06 Kelly O'Hair blogs about JDK 7...

32:10 Listener Feedback
33:04 'return this'
36:20 'instance initializers in anonymous inner classes'
38:40 Closures
41:38 Ryan Dewsbury's new GWT book
43:28 Java ME OS 10
45:30 Delegation vs Inheritance
49:10 NetBeans6 syntax coloring glitch
50:20 JUG popularity
52:55 JavaPosse T-shirts
55:50 Javapolis

2/4/08

JavaPosse Episode 160

This is a tracklist of a JavaPosse Episode.
Original shownotes and the audible mp3 can be found here.
More tracklists can be found here.

Interview with Bob Lee about Guice
(Guice is an IoC framework.)

00:30 Intro
00:47 What is Guice?
03:56 What was the reason to start a new framework?
10:23 Have you seen people use it for really small things?
12:51 What's coming up?
22:50 Some things about Google Collections API
23:55 Differences between weak and soft references
26:15 Interesting combinations of strong and weak references in practice
28:18 What are the other things that you think are coming in the future for Google Collections?
30:30 Anything else, goodbye, outro...

1/13/08

Nav N Go @ CES Las Vegas

It always inflates me with pride when I see a Hungarian company at a famouns international exhibition. Many tiny software companies in Hungary are usually forming for optimizing income and for supplying ordinary software demands of other tiny companies which have not too much aim beside optimizing income and supplying some ordinary human demands. No creative ideas, just for hunting contracts and tenders on more or less fair ways.

After reading their story I guess Nav N Go absolutely doesn't belong to this gang. They deal with car navigation systems and as I far I know they are market leader in the European region.