Skip navigation

 

Our CTO, Scott Stark doth not partake of the blog. Thus I will repeat the jist of his words here since I suppose there are those who don't subscribe to the jboss-development mailing list for the very reasons this change has been made.

 

We have made a number of changes to address the growing JBoss project set.

 

The cvs repository has been moved to anoncvs.forge.jboss.com to provide more reliable and resposive access for both anonymous access and comitter access. See http://www.jboss.org/wiki/Wiki.jsp?page=CVSRepository for the CVSROOT details.

 

The jboss.jira.com event mail messages have been moved from the jboss-development@lists.sourceforge.net list in favor of a new jboss-jira@lists.sourceforge.net list. See the http://lists.sourceforge.net/lists/listinfo/jboss-jira page to subscribe to jboss project jira events.

 

The developer forums postings have been removed from the jboss-development@lists.sourceforge.net list in favor of a new jboss-dev-forums@lists.sourceforge.net. See the http://lists.sourceforge.net/lists/listinfo/jboss-dev-forums page to subscribe to all dev forum postings.

 

The jboss-development@lists.sourceforge.net is now for free-form cross-project jboss discussion and automated build error messages. All committers should be subscribed to this list for general development issue discussion and notification of build errors.

 

So now we have a place for discussing larger project issues and those who find having email copies of the forum posts useful can have that too.

 

For those who prefer to use aggregators, you can also still get RSS feeds of forums by replacing the forum's number in this link (where 186 is the number for the JBoss Mail Server forum). Presently there is a bug where the posts don't always come out in the order that you'd expect (at least not in firefox).

I was pitching in with support cases when I came upon this one:

Created By: Support Customer, 4/15/2005 11:27 AM Last Modified By: Stan Silvert, 4/15/2005 12:18 PM

Subject: JBoss on Commadore 64

Description: How do I get the JBoss Application server to run on my Commadore 64?

 

Will 64K be enough memory?

And while it is rare, I have seen enough similar questions to where it did not immediately occur to me that this was a joke. (April fools being over and all) Upon further inspection, I realized it was a test case. I thought I'd share:

Case Comments   Help

Action  Public   Comment 

Make Private   4/18/2005 9:59 AM | Adrian Brock

To enable clustering on the C64 you need to:

POKE 17645,89

:-)

Make Private   4/15/2005 11:58 AM | Luc Texier

it is called "Commodore" not " Commandore"

 

http://www.silicium.org/cbm/c64/c64.htm

http://www.silicium.org/english.htm

 

Pay some respect punks!

Make Private   4/15/2005 11:35 AM | Support Customer

Any chance you will build a version of JBoss using BASIC? That would make it more popular among Commadore 64 users.

Make Private   4/15/2005 11:34 AM | Jim Moran

To get the performance you need you may want to consider clustering 4 of your 64s.

This way you will be running with a full quarter meg of memory.

Make Private   4/15/2005 11:30 AM | Stan Silvert

JBoss runs great on the 64.

 

JBoss will run on any Java VM, including those platforms for which no VM exists.

 

No application will ever need more than 64K. That's a LOT of RAM dude.

This is a sign that there are not enough support cases being logged today. Please go mess something up. :-)

 

Check out Does EJB 3.0 really make application development easy ? over on a blog called Loosely Coupled. Its a really great simple example. (PDF version)

 

(Download the PDF version of this article)

After reading through articles and posts regarding how EJB 3.0 is going to make application development simpler, I decided to give EJB 3.0 a spin and see if the claims are true.

I decided to take a publicly available demo application which is part of the J2EE 1.4 tutorials. I took the RosterApp application which has three Entity beans (LeagueBean, TeamBean, PlayerBean), one Session bean (RosterBean), three Data Transfer Objects (LeagueDetails, PlayerDetails, TeamDetails), a Debug utility class and a Client class. I converted/migrated/ported these beans and classes to an EJB 3.0 based application.

I migrated the application with the following steps:
Entity Beans
Data Transfer Objects (DTOs)
Session Bean
Client
and gave my final conclusion.



 

Only some minor nits: The blog can't be valid RSS or XML.

 

Currently there doesn't seem to be any support for using Native SQL queries, though the specification seems to say so. I would have loved to make use of those queries instead EJBQL, as database portability isn't a priority for me.

 

Generally the performance of that isn't worth it, moreover the opportunities for different kinds of appserver-side optimizations should eventually make this a useless feature in serious high-pro apps anyhow. Never say never but I wouldn't do everyday stuff with db specific queries.

 

I had a great time instructing the J2EE/JBoss for Java Developers course at the TechEngage Spring 2005 session at the North Carolina State University campus. TechEngage is a community-service organization which provides a full week of inexpensive ($145) training for displaced IS/IT workers (to attend the courses you must be un/underemployed). The organizers were most gracious and the attendees were extremely motivated (some of the most motivated folks I've seen).

 

 

As an instructor, I was allowed to attend some of the side sessions such as the Networking Skills and Communication Skills classes. Who knew that comparing a Linux distribution's install process to copulating with an elephant might not be appropriate? Just kidding. Actually I learned about some of my weird quirks that I engage in during a presentation. For instance, I tend to be very reverent and pious to the technologies I present -- actually I tend to just appear that way as I hold my hands together at my waist. There are other things I do. That being said, many of the things I do without realizing it are actually techniques taught in the course. Of course there are the unconventional things I do. It is rumored that I stand on furniture to make certain points.

 

In the networking skills class, I learned a lot about our local area that I was unaware of. Furthermore, I was able to understand some of the "networking skills" that I've only recently stumbled onto in more formal terms. Like most technical workers, I usually emphasize technical skills first. However, in recent years I've started working on developing "soft skills". Yet, I've focused more on "presentations" than on any thoughtful networking. Not that I haven't networked, but I've just not done so with any purpose. I'll still probably do a lot of purposeless networking (I just don't see the world in functional enough terms to be a real "networker") but I plan to apply more thought other types as well.

 

I think that this event and these types of events are very important and hope to see more of them in the future. Its entirely non-profit and the instructors volunteer their time. I'd also like to thank my employer, JBoss for donating the materials and allowing me the time to participate in this worthy event (no small thing since its normally a $3000/seat course). I'd also like to applaud all of the volunteers and organizers who made it happen.

 

Check this Novell add about Microsoft's EOL for Windows NT and Linux. :-) I've never been a big Windows fan.

acoliver

JBoss World day 1

Posted by acoliver Mar 6, 2005

 

I still didn't make it to all of the sessions I would have liked, and more of the value (for me) was talking to people.

 

Hibernate 3 - This was boring. I already knew what was presented. Everyone else was excited. Oddly Gavin seemed to state that there would not be a Hibernate 4, more like 3.1, 3.2, etc. He thinks they're about done with everything that can be done. I was reminded of this:

 

“Everything that can be invented has been invented.”

 

-- Charles H. Duell, Commissioner, U.S. Office of Patents, 1899

 

Of course there is some question about the quote actually being real, but that doesn't really matter because its a good story. BTW I had to sit on the floor against the front wall. People even took the nose bleed seats that you couldn't see the slides from (podium in the way) and whoa there were too many people in that room.

 

To me the most interesting thing in Hibernate 3 is "filters". Add filters + AOP and JBoss's security framework and you have the killer security app (not covered in the session). Consider adding stuff like rules engines and you have pure unadulterated evil security! Meaning I could set up advice based on the logged in users (applied not with annotations but to all objects along a certain vertical aka matching certain pointcut expressions). It would dink a filter and I wouldn't get back anything I couldn't see (the trick is setting up an association in the DB with what is essentially an access control list...yeah thats kinda yucky but I can't think of anything else). Then add per-instance annotations that gives you further security constraints on what you can do with what you *can* see. What's cool is you could do this without most of the developers being completely oblivious to it being there.

 

I also went to the JCA presentation. JCA is now becoming clear to me. This is good because I will need to write a JCA adapter. I cannot say that any part of it was interesting to me....it was tedious and boring. This is not the speakers fault. JCA is tedious and boring.

 

However, the best thing was making contact with the MySQL guy. We talked about my issues in JBoss Mail Server (and secondly JBossMQ) with simulated blob support in the MySQL driver. He showed me another technique which we can use for our new Blob "MailStore" stuff. (The theory -- that won't work completely due to DB driver support in most DBs -- is that we immediately redirect the stream from the DATA command to a blob in the DB so that we consume as little heap as possible as well as the opposite for POP/IMAP). As cool as that is, we can't really do it because most database drivers don't have real blob stream support (MySQL being no exception). However, after talking to the MySQL guy I see how I can work around this. Not the ideal solution but still accomplishing most of it. Still sucks that I have to do this for just about each database differently.

 

I also went to Mladen Turk's discussion on the new AJP 1.4 and recombination of mod_jk into mod_proxy. I'm glad this is finally going to be done well. Lots of features but you can watch it later on Syscon.

 

Next, I had a great chance to talk to the guys from Hewlett-Packard. We got to talking about benchmarks and other forms of deception. I told him some stuff I had discovered in the field about garbage collection and how certain other vendors like to cheat on benchmarks by disabling the garbage collector while running their benchmark on their appserver and how utterly pointless that is. He told me about some of their findings on different hardware platforms and about some of their high end x86/64 hardware (AMD/Intel). Also cool was just how those boxes are put together. I knew pretty much nothing about this stuff and what the performance differences were because I've dealt more with stuff like the PA-RISC, and SPARC. The folks doing Linux stuff generally aren't on as high end hardware -- this is changing -- but it was really good to get educated on this stuff. I look forward to working with these guys, they are smart people. Please send me a sample quad-opteron :-) -- I will test/benchmark JBoss Mail Server on it!

 

I also talked with the Apple guys. They were really interested in our increasing powerbook population. I have to admit, most folks here are Windows. A few use Linux (my servers are Linux...but not on the client!); however, there is an increasing number of people who are right-thinking and use powerbooks. I told him that the biggest thing that gave me pause was that they still don't have JDK 5.0 and they don't give any real info out about when its coming. This is really annoying as a developer. However, for all the other reasons -- Powerbooks are what a good consultant should have. I was kind of disappointed that they are still distributing a rather old version of JBoss (3.2.2rc1) and encouraged them to move forward.

 

Later I talked to Bill Burke about installing Gentoo if you want to completely optimize for hardware (it compiles all packages specifically for your hardware). I told him that Gentoo was great, the packaging was easier and that if you want to install something it doesn't all end up depending on X because of the massive dependency tree. Gentoo gives you only what you ask for and has optional dependencies. I told him that the downside was that "Installing Gentoo feels like being raped by a large elephant, but once you get past that everything is really easy". However, its not something I tell customers because most don't have a big enough pool of hardcore Linux admins to pull this off, but you can create a pretty optimized Linux-box (minus the JDK itself -- that should be open sourced ;-) ) and actually secure!

 

All-in-all this was the first useful tech conference I'd been to in awhile. It was just about equally who I talked to outside the sessions that made it worthwhile. So yeah, I couldn't say anything particularly negative about it in the company blog. However, I travel so much and do so many tech conferences that I really didn't want to come....I did so because I'm an employee of the company and it was important to the company that I be there. However, I'm glad they made me come. I got a lot out of it! I actually will ASK to come next year.

 

So I'm still writing my entry about yesterday, but I wanted to link the other folks (not JBoss guys) blogging about JBossWorld. I'll of course only link things that aren't massively biased against us (not the BEA spy who came's blog), but it doesn't have to be completely glowing. If you're sophisticated, just use the trackback and link from here. If you're not then add it to the comments. These are a few I read:

 

Look forward to seeing everyone next year!

acoliver

JBossWorld day 0

Posted by acoliver Mar 3, 2005

 

Today (yesterday) was the keynote, WHICH STARTED WITH A VIDEO CLIP OF Marc doing the numa numa DANCE (explanation). Unfortunately, as an an employee, I had to give up my seat and then there was not enough standing room (and when you see the picture, you will see that this was a huge room but could not have possibly fit everyone) and so I missed everything after Marc's talk. I was bummed, being in services the customer panel was the most interesting part to me. Oh well, we should rent a bigger space next year. It is a huge hotel but we kinda took it over and so what would have been a mostly empty space in previous years is feeling cramped in some of the busier sessions.

 

Some day I will get to talk to Thomas Diesler about the "nokia" branch of JBoss Mail Server so that I can merge in his changes (I think I get it now, but I wanted to make sure), but I couldn't make it 10 steps without getting wrapped up in a conversation with a partner or customer. Good conversations, and I'm really interested in the Novell stuff, especially Linux side, security/single sign on stuff, and IKVM/Mono stuff -- but I managed to keep almost getting to sit down with Thomas until it was time for another session and too late.

 

The main sessions I went to were the JBossProfiler by Clebert Suconic and the one on Helios by Nicholas Whitehead and the ADP gang. I met Nicholas on a training gig for JBoss back when this was a mere shadow of its new self. Our admin tool guys were salivating in the back as they saw all the pretty graphs and ease of use features. I was like..."so when are you coming on tour with me to just go add this everywhere JBoss is?" The thing about it is that you can create your own custom views and really tie anything into it. They were monitoring....uh hum....IIS threads next to JK threads.

 

The JBoss Profiler is something I kinda can take a little blame for. Clebert contacted me asking how he could get his profiler stuff into Apache. He knew me from POI, a project I co-founded, back when we were still a little project on sourceforge. I told him he might want to bring it to JBoss instead and so now he's gainfully employed at JBoss. He's kicking butt too. He mentioned how I whine about his web interface (I'm known for criticism for some reason :-P ). Its come a really long way since then (and it wasn't that long ago that I looked at it last). So now I'll just complain about the documentation which is really just starting to be fair (so give it a try, then ask on the forums -- this will help get the documentation process underway). This session was also packed. The really unique thing about JBoss Profiler is that it has promise for use in production by being able to filter down to the low level and do disconnected profiling. It has some cool features and things that are in the works, like JUnit-based profiling, but its the potential for use in production that attracted me and that I think attracts most folks to it.

 

Both sessions were packed and while no one sits in the nose-bleed seat (except me), there were people standing all long the walls. I remember when we barely could fill a room 1/8th of this size for a whole training -- let alone concurrent sessions.

 

I didn't get to go to some of the sessions I wanted to because they were concurrent or I needed to TCB.

 

So the party....yes...the party. Okay... The fur bus was really something. I'd never ridden in a fur bus, let alone a pink fur bus. I did feel like I needed gold teeth a furry hat and a gold medallion to go along with the decor, but oh well. So Ciara cancelled on us, but we had a great 12 PIECE band band play anyhow. There were also...umm...the ladies of JBoss. Anyhow, it was a party. Bob Bickel, impressed with his dancing skill and I learned that I may be the only person in the company that cannot dance what-so-ever (okay I took a couple swing dance lessons but I don't think that would have fit exactly). Nathalie and Marc Fleury were all over the floor. Even Bill was out there. I danced a little with Julien Dubois, but I'll let the inevitable incriminating pictures along with the time....oh nevermind. Marc promised that next year will be more than twice as big and as fun. That I hope to see. Only next year I hope not to have to leave early due to this dang cold.

acoliver

JBossWorld day -1

Posted by acoliver Feb 28, 2005

 

After MotFG, we had a large reception given by Novell. WHOA, this had more people in it than the last 3 JBoss events (that I've been to) combined and it was only a "day before" reception and there are many late arrivals due to weather. It was also amazing to see so many big brands with booths. From Apple to IONA to MySQL to UNISYS among others. It was also interesting to see the number of folks who I traditionally thought of as in a competitive camp. We're in a different stratosphere now.

 

However, the most interesting thing was watching our own Bob Bickel try and demonstrate the MotFG "lighter than air" basket jump on a chair. I always envisioned him performing this primarily through diplomacy, but no...Bob is ready to start training in Kung-Fu under the One-armed boxer.

 

If you've arrived early for JBossWorld, then down at the dogwood conference room we'll be watching "Master of the Flying Guillotine". You're informally invited if you would like to wander in around 7:00pm.

 

JBoss Mail Server 1.0 Milestone 2-final has been released. This revision includes a number of enhancements over Milestone 1 in particular stability and security features as well as a new GUI installation process. For installation instructions, please see the previous M2 RC1 annoucement. For further details you can check out wiki, project page, and forum.

 

This is still an early milestone release; however, it is already used by a number of people as their personal mail server and has already seen corporate early adoption. Still our main target audience are those who can produce useful bug reports and test scenarios (developer/technical) rather that those simply wanting a mail server. That being said we are seeking more along the lines of the latter group for testing the installation process.

 

Work has been going on at the HEAD and in a "nokia" branch, but I've not been stationary long enough to cut the final release of the M2 branch. I'm excited by the work on the JAAS integration and the new mail store (for streaming blob support to reduce the overall footprint). We're actively seeking further contributors!

 

Secondly, we have already had some work done on the "cheese" support package which supplies the graphical ant-based installer; however, more work is still needed to make the screen's prettier and more professional looking.

 

Interested developers should please contact us on the forums. You may email me directly (acoliver at jboss dot org) if you need help getting started and are too shy, but then you loose the benefit of the help of others.

 

JBoss Mail Server 1.0 Milestone 2 Release Candidate 1 has been released. JBoss Mail Server is a pure Java mail server based on the JBoss Microkernel and various JBoss Application Server Components.

 

Presently the M2 (RC1) release features:

  • SMTP Server - to send mail
  • POP Server - to retrieve mail
  • TLS Support for POP and SMTP - to secure your transport
  • SSL Support for POP and SMTP - not all mail clients support TLS
  • JMS Integration - mails can be processed by message driven beans
  • Extensibility though JMX configuration and custom Mail Listeners
  • Database-based mail storage
  • Graphical installation
  • And more

 

While this is an early milestone release, JBoss Mail Server is already used by some as their mail server and is already being put to commercial application. JBoss Mail Server seeks to provide a complete mail solution for both tier-1 mail services presently supported by traditional mail servers such as Sendmail and Postfix as well as tier-2 mail services presently provided by Microsoft Exchange and Lotus Domino. The roadmap for future releases of JBoss Mail Server is emerging and can be located here.

 

One of the new features of this release is a (still rather rough) graphical installation. To install JBMS, install the Java Development Kit, JBoss Application Server, and grab the JBMS binary from here. Unzip the binary and run the "install.sh" or "install.bat" script (there are also instructions in the included INSTALL.txt). A splash screen will go by and next you'll see the first dialog prompting you for basic configuration information:

 

 

If you happened to predefine JBOSS_HOME then the installer will pick it up. The configuration name determines which directory under $JBOSS_HOME/server to find the "deploy" directory. If you run JBoss with the normal "run.sh" or "run.bat" command and no arguments then the answer is "default". If you run it with a "-c bla" then the answer would be bla. Select which mail services you want. A basic mail server consists of SMTP and POP. POPSSL will give you a separate POP instance listening on a separate port encrypted with SSL. Be sure and set your hostname appropriately and even more importantly -- set the domain. The domain is usually what shows up after the @ symbol in your email address. Once you are satisfied click next and you will see this screen:

 

 

If you selected less than the default 3 services then your screen may appear slightly differently. A general use mail server should have True, False, True, False. Enabling TLS allows mail clients that support encryption via TLS to connect to the server this way. If you require TLS for SMTP then outside servers will not send you mail. TLS support for POP is a good idea but not all mail clients support it (more often they support dedicated POPSSL) so requiring it may not be such a hot idea. Once you click next you will see:

 

 

Your screen may look different depending on what services you have selected. The default port assignments are generally the correct ones. Changing the SMTP port will likely make it impossible for other SMTP servers to locate your server. If you change any of the ports then users will have to be informed because their mail client will suggest these defaults. That being said many UNIX operating systems require you to run JBoss as root if it is to use ports < 1000. Therefore you can set them to higher ports and use iptables to forward the port. Do whatever you feel comfortable with and click next.

 

 

If you know what DNS servers you wish to use you can enter them here. If you do not enter any, then JBMS will use whatever your default route is. You can discover your DNS servers either by looking at your network configuration or on most UNIX variants and on Windows XP you can try the nslookup command which usually reveals the IPs of your DNS servers.

 

 

For my systems, which are all UNIX-based (Linux, Mac OS X), I just use the default route and hit next.

 

 

If you have configured (or plan to configure) another database for your JBoss instance, then you can select it here (so long as you plan to use MySQL) otherwise select other and JBMS will default to Hypersonic mappings. If you need help configuring another database by hand or want to help us add/test defaults for another database to the installation tool then ask on the forum. Mapping is done through the "jbosscmp-jdbc.xml" file which will be located in $JBOSS_HOME/server/$JBOSS_CONFIG/deploy/mail.ear/entitymailbox.jar/META-INF and though JBossMQ's configuration. You can get the appropriate JBossMQ configuration for your database from $JBOSS_HOME/docs/jms and find instructions here. We are interested in making this part automatic for everyone so please give us feedback in the forum. Clicking next brings us to the keystore configuration if you have any TLS or SSL based services (if not skip the next two sections since the installer will):

 

 

If you have an existing keystore you can configure it here. If not we can generate one for you. Be sure to enter a password that is at least 6 characters long if you are generating the keystore. We pre-populate the path to the keystore for you. the ${jboss.server.home.dir} alias points to $JBOSS_HOME/server/$JBOSS_CONFIG directory. You can replace this with an absolute path if you wish. If you choose to generate the keystore you'll be brought to another screen configuring it (if not then skip this section):

 

 

You must enter the absolute path (even if you used the ${jboss.server.home.dir} alias previously) as the key generation tool is not smart enough to unalias it. You do not have to answer the questions on this screen correctly. You can put whatever you like. Do note that this will create a self-signed key which most clients will warn the users about. If you do not want that then go order a professionally signed key from these nice people. Click next and we'll set up some users:

 

 

Here you can add some user/password combos for mail accounts. You can have more than 5 in JBoss Mail Server, but you'll have to configure those yourself (edit $JBOSS_HOME/server/$JBOSS_CONFIG/deploy/mail.ear/mail.sar/META-INF/jboss-service.xml). Once you've added a few users click next.

 

The installer will install JBMS into your JBoss Application Server instance. You can start JBoss by going to the directory to which you installed it and typing either "bin/run.sh" or "cd bin {enter} run.bat". However, if you had happened to have JBAS running in advance, the installer would have hot deployed JBMS anyhow (see how cool we are)! The messages that JBoss reports should look like this:

 

 

Now we can test it! I use Mozilla Thunderbird as my mail client. If you use another mail client, that's okay, but the screenshots below are from Thunderbird. Your mail client will most likely use similar terminology. When I open Thunderbird, I get a menubar at the top of the screen. I select Tools->Account settings:

 

 

A screen like like this pops up:

 

 

I click add account and am taken to the account wizard:

 

 

Obviously I want an "Email account".

 

 

If this were a real external facing mail server it would say something like president@whitehouse.gov rather than andy@powerbook.localdomain. Anyhow, these settings are just fine so I press next:

 

 

I select POP (IMAP is still a few milestone releases away) and choose "powerbook.localdomain" as my mail server (just like what I configured in the installation). I uncheck global mail store since I want these test mails separate from my work emails.

 

 

Andy is indeed my username.

 

 

This is just a description for the overall account that will appear as the category in the left hand tree on the main screen for your inbox, sent, trash. The email address makes a fine label, so I click next.

 

 

How nice! Thunderbird has congratulated me on this amazing feat! However, I am not quite done since it has chosen my default SMTP server for outgoing mail rather then powerbook.localdomain! Let us fix that by clicking okay and going to the Tools->Account settings and navigating to andy@powerbook.localdomain (or whatever you set).

 

 

On OS X for some reason it does not really like connecting by name so I change the server to "127.0.0.1" (this wouldn't be a problem for a real server, but I am running locally on my laptop). I also make sure that "Use Secure Connection (SSL)" is selected. Thunderbird doesn't appear to support TLS, so I use my POPSSL instance. Now lets select "Outgoing Server (SMTP)".

 

 

We see my default SMTP server. Lets add one. Click advanced.

 

 

We should just see the default SMTP server, click Add.

 

 

We'll specify the IP as the server name (name is okay normally but OS X doesn't seem to like "powerbook.localdomain" or even localhost even though I have /etc/hosts configured and lookupd configured to use /etc/hosts). I am going to specify that I must pass a username and password and that I want TLS support. Thunderbird does support TLS for SMTP and its wise to use it. You don't want to pass your mails and password over the broad internet in the cleartext do you? Okay not a problem if we are going to localhost but the point is to lecture you on the sense of using SSL/TLS! I click OK and go back to my server settings:

 

 

I want to use a different SMTP server than my default so I click Advanced and click the SMTP tab.

 

 

Now let us create a test message:

 

 

Make sure your From: is set to your new mail server. Also consider turning off HTML mail in your settings, it annoys most internet users and only spammers find it exceptionally useful! Send the mail to yourself so that we cant test POP!

 

 

WHOA! Our mail client does not trust our new mail server! Okay, its just complaining that we do not have a certificate authority singing our certificate, we signed it ourself. Accept the certificate and click okay.

 

 

You may not see the above screen. It is mostly because I put my IP as the server name rather than the hostname. Just click okay if you do see this.

 

 

You will now be asked for a password. You do remember what you put as your password during the install right? Enter it and click OK. It will send the mail. Now lets click "get mail" for this account from the top menu bar. You will get more SSL warnings (click okay) and then:

 

 

Excellent! As you can tell I send myself lots of mails. Some of them I even spell correctly! Anyhow, if you have trouble with your general mail server setup consult the JBoss Wiki or ask in the forum. We hope to get more feedback and discover any major bugs in the next few day otherwise M2-RC1 becomes M2-Final. So please let us know if something seems broken.

 

This release is not a "performance release" its a feature and stability release. There is some great performance work being done in the HEAD of CVS and in the special branch called "Nokia_Branch_1" (this should be more stable but lacks some of the work on the installation). For those of you who are geekier, the install tool is basically ant with some custom tag libs. If you're interested in it you can check out the module in CVS called "cheese". Remember, JBoss Mail Server M2 RC1 is guaranteed or your money back! :-)

 

Rule #2 - Use direct JDBC for persistence (remember this is how to do it the WRONG way)

 

By using JDBC directly, you increase the complexity of YOUR code or reduce its scale. You are forced to implement your own data paging, own transaction handling, and own cache strategy (but not necessarily your own cache). You are also likely to increase the weight on the garbage collector thereby reducing performance.

In the event that you handle techniques like paging the data that you load, you opt for more complexity (which is a corollary to increased entropy and bugs). In the event that you do the simple minded thing "select * from table where bla=?" then you increase the amount of memory utilization and risk forcing more frequent full garbage collections.

 

It is still possible to utilize caching via JBoss Cache or similar products, but you will likely have to implement the "strategy" yourself. If you do not do this, and just query the database, then you increase the load on the server because you must reload data for every request for every user (don't forget the garbage collector!). If you do opt to implement your own cache strategy (when to put, when to get) then you will increase the complexity of your code. The worst thing you could do is use the HTTP Session as a Cache.

 

It is still possible to use a transaction manager with direct-JDBC but you will have to write your own transaction handling. Meaning, you will have to decide when and if you want a transaction. This increases the complexity of your code while reducing its reusability. We'll talk more about this next time.

 

Note that DAOs and other said patterns reduce the coupling of this code, they do not address the problem itself. You still have to implement it and you still have the added complexity as a result.

 

Inverse - Use a automated persistence (such as Hibernate)

 

Using a persistence mechanism such as Hibernate or even CMP, you can take advantage of both eager and lazy loading thus paging the data appropriately. Furthermore, you can utilize second-level cache, thus reducing load from IO and garbage collection. Lastly, you can utilize managed transactions. What's more is that you get all of this for free. Again, do you want to own that (I've read that O-R mapping is as high as 60-80% of most modern business apps)? Let JBoss help!

 

Next up: How not to handle transactions. Previously: using the HTTPSession as a Cache

 

I was writing this really long entry on the messed up things people do in their J2EE applications, but I lost my own attention due to the length. I figured I would break it up. This series will focus on how to make your application run poorly on JBoss and then give the inverse as well. Most of it will be just generic computer science type stuff, but it will all be with a JBoss-twist. My interest is performance and scalability not things like J2EE compliance. I will try and note where compliance might be an issue, but it is not possible to produce a completely scalable drag-and-drop application. This is going to focus on the idea that you are developing for a cluster of 1 to many JBoss instances. It hardly matters what you do for extremely small applications with limited requirements -- or does it?

 

Rule #1 - Use the HTTP Session as a Cache for database data (remember this is to SCREW UP your application)

 

By using the HTTP Session as a cache you can maximize the serialization your application does thereby limiting your scale and performance. Yes it works great on one system but when you have a cluster, the data must be serialized across all of the nodes every time you call "setAttribute()". Furthermore, the more nodes you have in the cluster, the more time they spend processing state replication messages (passed over multicast via JGroups).

 

As an added bonus, it is much easier to blow the JVM's heap size (OutOfMemoryException). It is likely that you do not know how big that session is getting, nor the objects created as overhead to replicate it across the cluster. Nor do you know in advance how many users will login at peak. Thus this is a recipie for "fall off the side of a cliff" degredation even if you do not blow the heap.

 

Inverse - Use second-level cache in your persistence mechanism and keep the Session as small as possible

 

Whether you are using EJB CMP, Hibernate or JBoss Cache directly -- you have access to a second-level cache in JBoss. Generally, if you could cache the data in the session, you can cache the data in second-level cache. Moreover, the data does not have to be replicated.

 

Both JBoss CMP and Hibernate offer "cache invalidation" and LRU algorithms to size this data appropriately. Meaning, you can use one persistence configuration to write the data which will send an invalidation message to the nodes whenever the data changes and invalidate it from cache. The data is not replicated to each node. In the event of a failure, you would just have a cache miss. This offers probably cleaner data than you could achieve in the HTTP Session.

 

Moreover, Hibernate offers optimistic locking strategies and dirty checking. It can merely check the data's staleness if it was used in a write rather than use cache invalidation (which could still be a little overwhelming).

 

JBoss CMP offers "Commit Option D" allowing the data to be flushed at regular intervals. This may be good enough in many cases and may have less overhead than cache invalidation for some datasets.

 

Rolling your own - Writing a persistence mechanism is easy, doing it right...

 

O-R mapping and caching are nothing new and are not hard to write. Writing them correctly so that they can be highly concurrent and writing advanced features such as cache invalidation is somewhat harder. Its not code you want to own or maintain and your boss is not likely to want to pay you to write and support it. JBoss can help you with solid and well-used, tested implementations. Its likely that the #1 most used appserver, JBoss, will have a better general use implementation then you could write as part of your development cycle while you write your business application. Moreover, if it does not completely suit your needs, you can use it as a baseline and have your changes committed to the appserver codebase. This can substantially lower your cost of ownership of your overall codebase. If caching is not part of your core business, then why focus on it as part of your day job. Let us help!

 

Next up: How not to do persistence

 

All in all this InformIT article about XDoclet and JBoss isn't too bad. It is nearly all code, and the example is a bit boringly familiar. My biggest criticism is how eerie these sites with developers/authors in suits are. When I first started working at JBoss I dressed up a lot more than I do now. Mainly because everywhere I went the developers said "umm, can you were something less decent, it kind of creeps us out". Since then I mostly still am the most stuffed-shirtish in the room, but not to the same extent.

Filter Blog

By date: