Marco Walther's Weblog

20081010 Friday October 10, 2008

Glassfish v2 and syslogd - an Adventure

I did not post here for a long time. One of the reasons was, that I was not really able to say too much about what we were trying to build. But now "Project Kenai" has made it to the public beta. So I can say that I was working on it for the last 18 or so month;-)

We run JRuby inside Glassfish and that's why I was interested in GF again. We have all kinds of servers running and we would like to consolidate all of the log information for easier handling. Most of the native Unix daemons don't have a problem with that, they can all log their information via syslogd. Glassfish claims to be able to do that as well. But I would currently say, it's more a claim than reality in the official builds:-(

We tried to let GF log via syslogd and found very quickly two problems:

But GF is OpenSource, right? I had already looked at the code to find the reason for the 6291 bug. Could I change it so that it would do what I wanted? It turns out that it was not too hard to get a first version working;-)

It's probably not perfect and you can clearly see the steps I took but the two little patches below will:

My first tests were successful. Now we have to decide if we want to use a patched version of GF.

The two patches are against the modules appserv-core and appserv-native.

For appserv-core, I followed the normal build instructions from the wiki and used the TSJSAS91_FCS_BRANCH tag. (I did a complete build but I don't think that would be needed) I then transplanted the two interesting class files into a copy (appserv-rt.jar) of our official GF version for testing.

I did not get the appserv-native module via the normal CVS/maven checkout. But since I found the problematic file before with the Fisheye in the SVN tree, I was able to check that module out via SVN. The v3 build instructions help to find the right SVN tree, but we are still interested in v2 here;-) It's native code, so if somebody wants to try that, you will need the Sun C compilers etc.

After building and replacing the libutilforsyslog.so, everything seem to be working as expected and I can enjoy my logs via the normal syslogd setup;-) Below are both, the normal server log and the access log directed to LOG_LOCAL6:

Oct 10 21:22:58 kenaidev13 SJSAS81_server.log: [ID 702911 local6.info] [#|2008-10-10T21:22:58.934-0700|INFO| \
    sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=17;_ThreadName=httpSSLWorkerThread-8080-0;| \
    PWC1412: WebModule[] ServletContext.log():
Oct 10 21:22:58 kenaidev13 Processing HomeController#index (for 127.0.0.1 at 2008-10-10 21:22:58) [GET]
Oct 10 21:22:58 kenaidev13   Session ID: 376348f6751afdd3c1220777a0ee15ca
Oct 10 21:22:58 kenaidev13   Parameters: {"controller"=>"home", "action"=>"index"}
Oct 10 21:22:58 kenaidev13 Rendering template within layouts/kenai.com
Oct 10 21:22:58 kenaidev13 Rendering home/index
Oct 10 21:22:58 kenaidev13 Completed in 0.34706 (2 reqs/sec) | Rendering: 0.30226 (87%) | DB: 0.00000 (0%) | 200 OK [http://localhost/]
Oct 10 21:22:58 kenaidev13 |#]
Oct 10 21:22:58 kenaidev13 [9374]: [ID 702911 local6.info] "127.0.0.1" "NULL-AUTH-USER" "10/Oct/2008:21:22:58 -0800" \
    "GET / HTTP/1.0" 200 14058

If you made it all the way here, those are the two little patches:  appserv-core.patch & appserv-native.patch.  They are in no way official  or fully tested. But they show that somebody can quickly add functionality if needed;-)

Have fun & I hope I'll write more often again;-)
 -- Marco


( Oct 10 2008, 11:03:01 PM PDT ) Permalink

20070215 Thursday February 15, 2007

The First JavaOne Flyer - Online Only

JavaOne FlyerUsually I try to stay out of the big announcements. But an email today caught my eye. You know, all those high-gloss flyers you get for diverse expos and conferences are using a lot of resources. Sun decided to to the first round for this years JavaOne online-only. If you have read some postings here, you will know that I really like that idea.

Here are the estimated resource savings:

"By producing this piece virtually, the Eco group has calculated the savings Sun has made:
Savings from not sending DM1 this year
-Assuming (based on last year) DM1 is equivalent to 2.5 pages of 0% recycled copy paper
-Total paper saved = 4.63 tons
-Greenhouse Gases reduced (CO2 equivalents) = 13  tons (26,297 lbs)
-Reduction in wood use = 13 tons
-# of trees saved (assuming 1 tree makes 16.67 reams of copy paper or 8,333.3 sheets) = 111
-Reduction in wastewater (and associated water pollution) = 78,616 gallons *(equivalent to 838K cans of soda)*
-Reduction in solid waste (stuff sent to landfills)  = 5.1 tons"

I think that's a good start. So please head on over to the JavaOne web site to read more about  the upcoming conference.

 

( Feb 15 2007, 03:34:38 PM PST ) Permalink

20061211 Monday December 11, 2006

VWP @NetBeans 5.5 and project update

We finally released the Visual Web Pack for NetBeans 5.5;-) So I might actually write a couple of more entries here again.

Some people see problems when they try to take a project from the VWP TP and open/build it with the final version of VWP. Something like:

I installed the new version of VWP but when I want to use my
previous project it shows below error:

C:\TP_Project\nbproject\build-impl.xml:419: Warning: Could not find file C:\TP_Project\${libs.woodstock-components.classpath.libfile.6} to copy.
BUILD FAILED (total time: 1 second)

The problem is that the libraries for the components have changed. Normally that should be handled automatically on project open when the project properties are synchronized with the values from the IDE. But when there are no other changes, to the IDE, the regeneration of the nbproject/build-impl.xml might not happen.

So when you see this problem while building/deploying a TP project, do the following:

The reopen will regenerate the nbproject/build-impl.xml with the right information.

I hope this is helpfull;-)

Thanks,

-- Marco

( Dec 11 2006, 02:41:56 PM PST ) Permalink

20061025 Wednesday October 25, 2006

NB 6 - trunk, Java SE 6 and KDE

Long time nothing on this blog. Sorry about that. But here I come again;-)

I started playing with NB 6 on top of the Java SE 6 RC builds. And as always I'm not using the default configuration. So I ran into an interesting problem. The NB IDE was not able to open an external browser on my Kubuntu 6.06 system:-(

That worked fine with all the NB 5.5 builds I played with, but as it turns out, NB 6 makes use of the new java.awk.Desktop classes when it's running on a newer JDK. But that class only throws IOExceptions when it isn't able to handle the browse() action.

So strace is your friend, and a few minutes later, I had:
[pid 15878] execve("/export/home/marcow/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/local/sbin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/local/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/sbin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/sbin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/bin/X11/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/usr/games/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/export/home/marcow/usr/vspms/bin/linux/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/export/home/marcow/usr/vspms/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/opt/Forte/teamware/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/export/home/marcow/usr/vspms/bin/linux/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/export/home/marcow/usr/vspms/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
[pid 15878] execve("/opt/Forte/teamware/bin/gnome-www-browser", ["gnome-www-browser", "http://www.sun.com"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)

OK, once you know what the system is looking for, it's easy to fix;-) If your path does not contain a gnome-www-browser, create one via a simple symlink.

Maybe this helps some people.

Have fun,
-- Marco

( Oct 25 2006, 02:35:11 PM PDT ) Permalink