Uchana Jackson

Ranch Hand
+ Follow
since Dec 07, 2007
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Uchana Jackson

At least for 6.2.1, it's very to get setup with JBoss 4.2.1.GA. There is an integration wizard: http://www.ej-technologies.com/products/jprofiler/java-profiler-JEE.html that basically modified my run.bat by adding the following:

The problem for me now is how do I know what to do to find a memory leak, for example? There is some learning/training involved. What about YourKit? Both are commercial. I can't find a good open-source equivalent with decent documentation.
10 years ago
Is it possible to do that?

Here is an example:

I want to read the value for jcifs.http.domainController from properties file or DB table. Does the Servlet spec allow for this and how can it be done (e.g. EL expression, etc.)
12 years ago
When will this current version of the SCWCD be upgrade/phased out?


JSF has been out for a long time now. Is Sun planning on upgrading the exam to include JSF? If yes, when and how valuable will the current exam be if that happens?

Obviously Servlet spec is still very important but we don't use JSP at all in Seam dev (usually xhtml faceletes templating, although JSP is a secondary option). Even SpringSource has Spring Faces now...
Sorry, the ugly comment was not about Dan.

I have just posted a very *NICE* review of Seam in Actin on amazon. Enjoy.

Thank you for your kind words of praise. My wife will also be happy to know that you like the index, since she did a lot of that work Would you be willing to post this comment as a review on Amazon.com or BarnesAndNoble.com? I know, I am such a glutton for reviews, but know that I genuinely want other people to benefit from the information I stuffed into this book as well...and they need to know it's going to be worth their while.

You seem like a genuinely nice and helpful guy. Don't worry, i'll write a very good review for you soon...

<From Mark Spritzler: I removed a not nice comment from your post. Remember the #1 rule at JavaRanch. Be Nice.>
[ October 30, 2008: Message edited by: Mark Spritzler ]
If the Seam dev team is merely going to add <distributable/> to web.xml and @Clustered to all SFSBs in whichever Seam example app(s) they choose, that's not a big help.

A big help would be to have a pre-configured node folder based on the production folder in the jboss-as/server folder. This is essentially what I did and most people do to create a configured node for a JBoss cluster.

Or at least instructions on how to use the production folder and copy it to another JBoss instance for clustering capability (i.e., ensure JBM PostOffice # is unique in each instance, etc.)

The idea being you download Seam distro, you read the cluster config instructions and execute and copy that instance to your other server's jboss-as/server folder, deploy clustered_seam-booking to both instances and start up JBoss on both instances. You have seam-booking running on a 2 node horizontal cluster within an hour.

I already did all this but it should be part of the Seam distro to prove that it's a mature, production-ready product...
[ October 13, 2008: Message edited by: Uchana Jackson ]
First of all, even if you have several years of J2EE dev experience (with Spring/hibernate or Struts/EJB2) and zero years of experience with JSF and EJB 3, then the learning curve for Seam is very high. Trust me, that was my case. You have to learn the life cycles for JSF and Seam and EJB 3 components models. Then how they integrate among the layers. Then learn EL (expression language) and all the various JSF and Richfaces/Icefaces components and don't forget Facelets for presentation templating. And navigation, and security, and all the Seam tags and annotations. And keeping up with upcoming versions so you don't reinvent the wheel (e.g. Seam 2.1 Identity Management is a good example with the JpaIdentityStore and Member/Role tables, etc.) Good luck. Any powerful and flexible technology will be difficult to learn initially, whether it's software engineering or otherwise.

I have been using Seam professionally on multiple corporate projects for over 1.5 years. Some of the concepts in Seam are very advanced, like conversations/workspaces and bijection, and take a long time to learn and apply properly (not to mention design patterns and best practices). And there's a lot of decisions you must make along the way as well. Do you use Icefaces or Richfaces component frameworks for your presentation layer? Do you code your app to be ready for a clustered environment (add <distributable/> to web.xml and @Clustered to session beans)? Do you need a DAO layer or not?

Secondly, the phone support which Dan speaks of will cost you around $70K. Call Redhat to inquire if you don't believe me (one of our branches did and ended up not purchasing it). You can get very decent developer email support via the Customer Support Portal for $3500 yearly with 2 day SLA.

Thirdly, JBoss/Redhat EAP "certified stack" seems to have QC issues as evidenced by the recent bug we ran into in EAP 4.3 which caused failover to not work when a node in a cluster goes down. This was due to problems with HTTPSession invalidation and we received a class from JBoss - ClusteredJBossSeamListener - that fixed the problem for my clustered version of the hotel booking project. Here is the JIRA for this bug:


Fourthly, why isn't there a clustered version of one of the Seam distro examples? seems kinda strange...

Fifthly, this new concept of the "feature pack" http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.3.0.cp02_fp01/html-single/readme/index.html that JBoss/Redhat just recently introduced is very strange. why would JBoss combine tech preview libraries into a feature pack which is recommended to be used with EAP 4.3 CP02? that seems kinda dangerous if you use beta software in a prod EAP stack.

We are currently setting up a 2 node horizontal cluster in production using IIS, Windows 2003 server, mod_jk, JBoss EAP 4.3 and SQL Server.

Here are my detailed instructions to set that up (it's a major pain to do it on your own, trust me):


All that being said, Seam is the only web/integration Java EE framework available that supports conversation and business process context. I know Wicket supports conversation but nothing else is close to Seam.

If you like the idea of working with a contextual component model with no xml hell and no layering requirements, then Seam is the framework for you (esp. if you already use JBoss b/c of the jBPM integration).
learn how to use jBPM integration in Seam and the business process context. you never know when you'll need it. so far (over a year of Seam 1.2 and Seam 2 dev), I have only done simple CRUD apps at my employer and used the hell out of conversation-scoped components, bijection, and JPA/Hibernate.

Please enlighten us regarding the bolded section below. How does the synchronization of data in the persistence context from an outside transaction (say from query analyzer, etc.) occur? And is that part of the JPA 1.0 spec or specific to Hibernate as the persistence provider?

Putting aside that Spring WebFlow requires you to use a stateful pageflow, and comparing it with Seam on other bases, both solve the most fundamental problem in enterprise applications, management of the persistence context. The persistence context (e.g., the JPA EntityManager or Hibernate Session) is a stateful component. It was intended to remain open for the lifetime of the use case in which you are modifying the entities that it retrieves.

Case in point. You select a record for editing. You modify that record. Then you save it. The persistence context should remain open for that entire use case. Then, the ORM tool (e.g., JPA or Hibernate) can automatically detect changes and push them to the database. Better yet, it can detect when the database has been altered in the interim and prevent those changes from overwriting someone else's changes. There are a whole host of other features, such as persistence by reachability, that simply make the task of database saves and updates completely automated.

You'll find that security with Seam (e.g., page-level and component level restrictions) are fairly easy. Using the Seam Identity object, you addRole() at session startup (after successful authentication), and hasRole() to check to see if the current user can do this or not.

configuring page navigation in the pages.xml is fairly easy as well.

honestly, Seam has lots of easy concepts and lots of difficult ones as well.
Excellent book! I've been using Seam since 1.2 and this book is by far the best and most detailed I've read thus far (I have read three other Seam books). I especially appreciate the pics and tables (summarizes a lot of info quickly/easily); those should be added to the Seam ref docs. Very nice job on the editing, looks very clean so far! I use it for reference a lot now as well as the Seam ref docs. Index is very good as well.

Regarding section 11.1.3 A glimpse at Seam�s identity management, I need to get a better understanding of what you mean by "your authentication method
becomes history". I did build and deploy seamspace from 2.1.0.CR1 into EAP Jboss AS from JBDS 1.1.0.GA and got some deployment exceptions as listed here:


Is there a better example on how Seam Id Management will integrate with JBossSSO or OpenID or OpenSSO, etc.?

Currently we are using NTLM with a custom authenticator class which authenticates the user first via NTLM and then authorizes via identity.addRole(). The method adds the role(s) the current user is in for that app to the Seam Identity session-scoped instance.

We have our own corporate Identity Management solution but we do not have a Role table in that schema. We'd like to keep it in a central db so we don't replicate the Member/User table and Role table for each Seam app. We'd also like to add an Application table such that the schema can be centralized (i.e., after authentication, we need to find all the roles this user is assigned to for this app). We have multiple field sites doing Seam development and so our distributed model makes things more complicated.

Will we be able to implement SSO with JBoss 4.2 and org.jboss.seam.security.management.JpaIdentityStore?? any examples showing how to accomplish this?

We're also concerned about the fact that we may not be able to use Seam Id Management until we upgrade to EAP 5.0 (if 2.1 is included in that release).

Here is a related Q&A from Pete Muir's blog:

I am starting a new seam project that will release into production within 3 months. Can I safely start with Seam 2.1 with confidence that the beta cycle will be complete by year's end?

yes ;-) The Seam 2.1.0.GA release will be available in the next month or so. There will be follow on releases that focus on specific improvements 2.1.1 (increased performance) and 2.1.2 (SSO support). These should be drop in replacements for 2.1.0.

Dan, when you coming out to SoCal/OC to talk about Seam and your book?

I'm trying to get Norman Richards to show up in Orange County as well when he's here in San Diego...

so how many pages in the paperback version?

The revised PDF I have is 679.

Once you get up to the length of the Bauer and King book, it's too long and too heavy.

Please make sure the index is long and useful!!!

The Yuan book (1st edition), suffered in this regard as a reference manual.

There seems to be very little coverage of MDB's in Seam in Action. There is currently a question on the Seam forum regarding MDB's.

I guess it's b/c not too many use cases warrant the use of asynchronous messaging...

Will Seam in Action cover integration testing as extensively as the Seam book by Yuan and Huete? The coverage in the Seam ref doc is not sufficient regarding this important concept/practice...