Insert Witty Irony Here

vince kraemer's Weblog


20080514 Wednesday May 14, 2008

New Improved Tooling for Sailfin

...Now built Pragmatically, end to end...

Some folks may recall that I had done some work to make the Sailfin build for the tooling a bit more pragmatic. With the hustle and bustle to prep for JavaOne, completing that work got delayed.

But, now that work is done....

What does that mean to users? A lot, I hope.

Now, folks will be able to get their hands on tooling bug fixes quick and easy. The Sailfin project's nightly build will have the latest and greatest tooling, without nasty manual intervention.

Ah! A smooth running pragmatic build process... It smell like victory! Or was that Teen Spirit.... Hmmm.

(2008-05-14 22:25:55.0) Permalink Comments [0]

20080423 Wednesday April 23, 2008

The internet shows you how small the world is...

While web surfing yesterday, I discovered that a woman that shares my daughter's name lives in the house that my paternal grandparent's lived in when I was a kid.

It is amazing what you can find out on the internet, randomly.

(2008-04-23 21:45:14.0) Permalink

20080320 Thursday March 20, 2008

My 15 minutes are up...

I took part in an interview with Geertjan for JavaLobby. The interview went live earlier this morning, but now my fifteen minutes are up.

It was a rush.

(2008-03-20 09:20:20.0) Permalink

20080319 Wednesday March 19, 2008

Test agent evolution

While I have been working with the build infrastructure, I have been making some changes to the test agent. Most of them are pretty minor tweaks and bug fixes.

The most significant change that I have made is on the main "screen". In the past, all the shortcut buttons, like 'ACK', 'CANCEL' and 'BYE' were always enabled. These shortcuts are now enabled and disabled based on the selected item in the history list.

The state of the shortcuts when a request message is selected.

The state of the shortcuts when a response is selected.

I have also extended the Converged Servlet Application to open the test agent automatically, when it is deployed. It isn't much. I hope that it will save users a click or two.

I have also spent some time fixing bugs and doing some clean-up, based on the output of FindBugs.

(2008-03-19 17:02:49.0) Permalink

20080318 Tuesday March 18, 2008

Got Sunray? Need Hg?

I helped a co-worker configure his environment (a Sunray) to allow him to clone the NB repository. It actually wasn't very hard. The instructions are in the Netbeans wiki: http://wiki.netbeans.org/HgAndSunrays.

(2008-03-18 13:18:39.0) Permalink

20080317 Monday March 17, 2008

Directory Deployment from NetBeans to GlassFish

I published a teaser entry, where I demonstrated the effect of a code change related to directory deployment that I had pushed a couple days before. Since the entry was exposition "thin", I have gotten some questions about it...

After reading through the questions, I figured it would be easy to google up some reference and post them....

Boy, was I wrong!

I hope that this entry will answer the questions and be a "hit" for folks interested in NetBeans, directory deployment and GlassFish. The synonym for directory deployment in the JBoss user community appears to be 'exploded deployment'. The synonym for directory deployment in the WebLogic user community appears to be 'deployment of exploded archive directories'.

When a project is directory deployed into a web container, like Tomcat, or an app server, like GlassFish, a lot of optimizations can occur.

  1. packaging the module or app becomes unnecessary.
    No archive is created.
  2. unpacking the module or app becomes unnecessary.
    No archive needs to be read and/or transfered and exploded.
  3. JSP changes are detectable, if the IDE forwards source changes into the 'deployment directory'.
    NetBeans pushes changes to html and jsp files to the deploy directory. Both servers detect the updates when the page is requested and do the necessary work to display the current content.

NetBeans supports directory deployment of Web Application projects to Tomcat and GlassFish. This has been available for quite some time. I found this reference that alludes to directory deployment with NB 3.6 and Sun Java System Application Server 8.0. NetBeans was extended to support directory deployment of ears and ejb-jars onto GlassFish V2 in the NetBeans 6.0 release.

The other server integration plugins for NetBeans 6.0.1 or NetBeans 6.1 (recently beta'ed) do not support directory deployment.

The recent changes that improve the performance of 'Run Project' and 'Run File' for a JSP file change in web applications and web applications embedded in an enterprise application are available in nightly builds of NetBeans 6.1.

I hope to integrate some of the ideas from a blog entry by JFA in the next few days. This will make even more web-app change scenarios faster.

(2008-03-17 07:50:53.0) Permalink

20080312 Wednesday March 12, 2008

Some Directory Deployment Improvements

Old stuff... ant output from second Run File on a jsp... with no code change in the jsp (or anywhere else in the web app)...

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
Incrementally deploying WebApplication137_localhost:4848_server
Completed incremental distribution of WebApplication137
Incrementally redeploying WebApplication137_localhost:4848_server
Start registering the project's server resources
Finished registering server resources
moduleID=WebApplication137
While redeploying, trying to stop the application in target server  completed successfully
While redeploying, trying to remove reference for application in target server  completed successfully
deployment started : 0%
deployment finished : 100%
Deploying application in domain completed successfully
Trying to create reference for application in target server  completed successfully
Trying to start application in target server  completed successfully
Deployment of application WebApplication137  completed successfully
run-deploy:
Browsing: http://localhost:8080/WebApplication137/index.jsp
run-display-browser:
run:

BAD! The IDE is doing a lot of work that is not necessary that I have to wait for it to finish....

Recent changes.

New Stuff... ant output from second Run File on a jsp... with no code change in the jsp (or anywhere else in the web app)...

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
Incrementally deploying WebApplication137_localhost:4848_server
Completed incremental distribution of WebApplication137
run-deploy:
Browsing: http://localhost:8080/WebApplication137/index.jsp
run-display-browser:
run:

SWEET! The IDE avoided doing the unnecessary work, so I can be more productive!

New Stuff... ant output from second Run Project on an Ent App projects that has the web app from the previous tests in it... after the user has changed some content in the JSP....

pre-init:
init-private:
init-userdir:
init-user:
init-project:
do-init:
post-init:
init-check:
init:
deps-jar:
deps-j2ee-archive:
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
do-ear-dist:
Building jar: /export/home/vkraemer/NetBeansProjects/WebApplication137/dist/WebApplication137.war
dist-ear:
pre-pre-compile:
pre-compile:
do-compile:
Copying 1 file to /export/home/vkraemer/NetBeansProjects/EnterpriseApplication158/build
post-compile:
compile:
pre-dist:
do-dist-without-manifest:
do-dist-with-manifest:
Building jar: /export/home/vkraemer/NetBeansProjects/EnterpriseApplication158/dist/EnterpriseApplication158.ear
post-dist:
dist:
pre-run-deploy:
Incrementally deploying EnterpriseApplication158#/WebApplication137_localhost:4848_server
Incrementally deploying EnterpriseApplication158_localhost:4848_server
Completed incremental distribution of EnterpriseApplication158
post-run-deploy:
run-deploy:
Browsing: http://localhost:8080/WebApplication137/
run-display-browser:
run-ac:
run:

SWEET! The IDE was busy, but the time to do all this "work" was almost zero seconds. We may be able to eliminate some of the work from this case, too.

(2008-03-12 13:32:39.0) Permalink Comments [1]

20080214 Thursday February 14, 2008

Love the freshest tooling bits?

I wrote up an entry a couple days ago about a new way to get the NBM files that implement the SIP application development support. In that entry I lamented that the process that gets the bits there wasn't very Pragmatic, since it wasn't fully automated and repeatable.

Today, I want to let you know that I have extended the build to be a bit closer to a Pragmatic solution.

Here is what you need to do....

  1. Create a workspace directory. Let's call it SFWS.
    mkdir SFWS
  2. Change directory into SFWS.
    cd SFWS
  3. Checkout the Project Sailfin "bootstrap" code.
    cvs -d:pserver:<java.net.id>@cvs.dev.java.net:/cvs co sailfin/bootstrap
  4. Set the correct values for maven.proxy.*
    These properties are found in SFWS/sailfin/bootstrap/project.properties.
  5. Change directory into the boostrap directory
    cd sailfin/bootstrap
  6. Setup your environment
    maven setup
  7. Download the major dependencies for compiling the Project Sailfin code.
    maven bootstrap
  8. Checkout the Project Sailfin code, including the tools!
    maven checkout-sailfin \     -Dsailfin.build.dependency.order=ssa-api,common,security,sip-stack,deployment,administration,clb,replication,integration,tools,docs
  9. Build the Project Sailfin code, including the tools!
    maven build-sailfin \     -Dsailfin.build.dependency.order=ssa-api,common,security,sip-stack,deployment,administration,clb,replication,integration,tools
    One important thing to note: This step will attempt to download bits for NetBeans 6.0.1. If you aren't connected, this will probably fail.

If you look in SFWS/publish/glassfish/lib/tools/netbeans, you will see the nbm files... built fresh from the source!

You should probably note: these instructions are very similar to the Building SailFin without checking out and building Glassfish instructions.

Update: 22 Feb 2008... the value for sailfin.build.dependency.order needed to change for the checkout-sailfin step...

(2008-02-14 13:16:53.0) Permalink

20080208 Friday February 08, 2008

Finding Tools for Sailfin Has Never Been Easier

In the past, I have been sending folks to https://sailfin.dev.java.net/servlets/ProjectDocumentList to get the nbms for the SIP development tooling.

When the code got updated, I would do a build and stage the bits for folks to use. This created some extra work for me, but was a pragmatic solution at the time.

It wasn't a Pragmatic solution, though. I was creating the bits from my personal workspace. I was moving them into position by hand. And that bothered me.

I wanted the bits to be in a more accessible location. I wanted to get the bits to get to that "place" through a more controlled and repeatable process.

Today, we are half way there!

If you get today's nightly build of the project Sailfin code, you will find a new subdirectory tree under lib:

  • tools
    • netbeans

The nbms that implement the SIP application development tooling are all there, ready to be installed into NetBeans.

(2008-02-08 10:03:29.0) Permalink

20080116 Wednesday January 16, 2008

Is Javascript the C of the Web

Last night, while the wheelers and dealers of MySQL, Sun, Oracle and BEA were signing on dotted lines the tech crowd was at Google's building 43 for the Silicon Valley Web and Java Users group meeting to hear a presentation about GWT.

Bob Vawter's presentation was excellent. He covered the basics quickly and took questions. His presentation provided answer to some of the things that make folks go, "Hmmm", when they look at the output of the GWT compiler.... Like, "What are all those obtuse numerically named files all about?"
Short answer (heavily paraphrased): They are the Javascript of the UI that you created in GWT, pretailored for each of the four major browsers out there today. The names are created from a hash of their content and are safe and easy to cache. When you change the UI, the name of the files will change, so folks don't keep seeing an old UI and have your server side processing freak out because of missing data.

There was a raffle for a number of books. I won a book.

Why does this entry have its title?

While Bob was talking about GWT, it reminded me of working at Interactive Software Engineering, now known as Eiffel Software. The Eiffel compiler used a similar "trick" of transforming a strongly typed language (Eiffel) into a weakly typed language (C). From the outside, it looks like GWT is doing something similar with Javascript playing the part of C.

Another parallel between GWT and the Eiffel compiler was the amount of optimization it could do. After expressing his sample in a rich language, Java, the compiler optimized almost ALL that richness out of the resulting Javascript code... making it much leaner.

(2008-01-16 21:18:17.0) Permalink

20080114 Monday January 14, 2008

NetBeans 6.1 and Project Sailfin

While work is being done on the modules that let users create and test SIP Servlet applications that can be deployed to a Glassfish domain that has been extended to support SIP, one of my teammates has been working on making these applications "visible". We have also been working on making the choice of which type of server to register in the IDE more obvious.

We committed many of the necessary changes over the weekend. If you get a recent nightly build of NetBeans 6.1, you should see the following changes:

  1. Explicit reference to Sailfin in the 'Add Server Instance' dialog.
  2. SIP Servlet applications are now visible in the Services explorer.

I was also able to install the latest available builds of the SIP Application Development module and the SIP Protocol Test Agent module into the NetBeans 6.1 build.

There is a fair number of code changes that have been going into NetBeans 6.1 to hit Milestone 1. These changes should finish baking this week. If you want avoid being on the absolute bleeding edge... you may want to wait for the NetBeans 6.1 Milestone 1 release. If you have serious thrill issues: Download, Fire up and Save Often.

(2008-01-14 22:40:58.0) Permalink Comments [1]

20080111 Friday January 11, 2008

Cannot edit entries on the GlassFish wiki?

You may run into this message when you try to edit a page on the GlassFish project wiki site:

Forbidden

Sorry, but you are not allowed to do that.

Usually we block access to something because you do not have the correct privileges (e.g., read, edit,
comment) for the page you are looking for. In this particular case, it is likely that you are not
listed in the page’s access control list or that your privileges aren’t high enough (you want to 
edit, but ACL only allows ‘read’).

It is also possible that JSPWiki cannot find its security policy, or that the policy is not 
configured correctly. Either of these cases would cause JSPWiki to block access, too.

Better luck next time.

You may ask, "Why can't I add or edit a page on the Glassfish wiki site after I have logged in?"

Due to spamming and wiki vandals, the folks in the GlassFish project have added an extra step to the authoring process.

You may ask, "How do I get permission to add and edit pages on the GlassFish wiki site?"

It is explained in a FAQ entry.

I hope this entry will provide you with "Better luck next time."

(2008-01-11 09:39:14.0) Permalink

20080107 Monday January 07, 2008

SIP Application Development Module version 0.4 for NetBeans 6.0

Now that the holiday break is over, it is time to release a new feature in the SIP Application development module: the SIP Listener wizard.

You can find the wizard in the list of items that you can add to a Converged Servlet Application project, via the project's right click menu.

This is what the wizard looks like.

Here is a sample of the code that is generated, if you set the package to "a" and select the SipApplicationSession Listener check box and the SipServletListener check box.

package a;

/**
 *
 * @author vkraemer
 */
@javax.servlet.sip.annotation.SipListener
public class NewSipListener  implements javax.servlet.sip.SipApplicationSessionListener,
	javax.servlet.sip.SipServletListener 
{

    public void sessionCreated(javax.servlet.sip.SipApplicationSessionEvent sase) {
        throw new UnsupportedOperationException();
    }

    public void sessionDestroyed(javax.servlet.sip.SipApplicationSessionEvent sase) {
        throw new UnsupportedOperationException();
    }

    public void sessionExpired(javax.servlet.sip.SipApplicationSessionEvent sase) {
        throw new UnsupportedOperationException();
    }

    public void servletInitialized(javax.servlet.sip.SipServletContextEvent ssce) {
        throw new UnsupportedOperationException();
    }

}

The new build is available in the project's "document list" as version 0.4.

It has been tested a bit with NetBeans 6.0 and Sailfin build 15.

(2008-01-07 18:48:29.0) Permalink

20080102 Wednesday January 02, 2008

Another Witty Ironic Observation

I was looking through the UC Extension, Santa Cruz catalog and discovered a course with a title that just drips witty irony.

UCSC has a a counter-culture reputation, so I have to wonder if they were just trying to milk that... or whether this was just one of those Great Moments in Copy Editing.

(2008-01-02 21:10:52.0) Permalink

20071231 Monday December 31, 2007

GIGAOM on SIP

I found this message about SIP in my reader today. If you are thinking about doing SIP application development, you might want to look at the capabilities that we are adding to NetBeans to develop SIP Applications and the Sailfin project.

(2007-12-31 10:43:15.0) Permalink

Calendar

« May 2008
SunMonTueWedThuFriSat
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
       
Today

RSS Feeds

XML
All
/5 in 5
/Compile Time
/Ease of Evolution
/General
/GlassFish
/Gotchas
/Java
/Music
/NetBeans

About Me

Photo of Vince Kraemer
Short Bio

Search

Links


Navigation



Subscribe with Bloglines Add to Technorati Favorites

Referers

Today's Page Hits: 253