[seam-dev] Seam 2.2 migration to Seam 3

Lincoln Baxter, III lincolnbaxter at gmail.com
Wed Mar 12 23:05:49 EDT 2014


Hi there,

I have some (probably not very positive) answers, but here goes. In general
Seam 3 is "as is" and will not be patched, improved, or otherwise changed
unless the client (or another community member) wishes to do so. On top of
that, patches submitted will probably not be merged or released since the
last release was over a year ago now at this point if I am not mistaken.
You'd have to find a committer who is willing to dredge this up again :)
I'm not saying it's impossible, but there will be some pretty serious
barriers to getting improvements made.

Aside from that, I believe Seam 2 is still a supported Red Hat project
(Seam 3 never made it that far.)

1) You can try your luck with upgrading to Seam 3, but know that would be
upgrading your customer to a project that is officially cancelled and will
not be continued. There are still quite a few known bugs that were never
fixed. Errai is still actively developed and has a good community. JAX-RS
is a standard, and will be around for a long time to come, so I would
probably echo what was said on the list. That being said, there is good in
Seam 3, and a lot of good work went into it, so if you are OK with the
circumstances around this project, then I would say continue at your own
risk, but you may find it works.

2) Look at the CDI conversation scope with JPA and an
@PersistenceContext(type=EXTENDED) context. This is effectively the same
thing as a Seam-Managed Hibernate Session, except it will not be closed and
re-opened before/after RESTORE_VIEW phase. However, you can use EJB
@TransactionAttribute methods to do your work in a transaction where
required. (See this article for more info on that:
http://ocpsoft.org/java/spring-to-java-ee-a-migration-guide-cdi-jsf-jpa-jta-ejb/(The
article is about Spring, but many concepts are shared with Seam 2.)

3) There isn't really a good XML configuration mechanism in Java EE (other
than the basic web.xml, persistence.xml, ejb-jar.xml, etc...) So I don't
really have a good recommendation for you here.

*New questions:*
If you are looking for functionality to control Routing and Navigation,
check out http://ocpsoft.org/rewrite/ (with the rewrite-integration-faces
module) or http://ocpsoft.org/prettyfaces/, which includes both of the
former - either of these projects will give you access to several utility
classes such as the "Navigate" class, and other things, but all said, JSF2
has much better support for navigation than JSF 1.2 did (which is what I
guess you are using if the customer is still on JSF 2.2)

Here is an example of the user logged being redirected if not logged in:
http://ocpsoft.org/rewrite/examples/#section-4

I hope this is helpful, but I do wish I had better news. I would really
consider Errai or just plain Java EE with JAX-RS. I can't really recommend
that anyone start using Seam 3 now, several years after its demise.

~Lincoln


On Wed, Mar 12, 2014 at 10:00 PM, Jon Da Vault <jdavault at redhat.com> wrote:

> Hello list members,
>
> Earlier today I posed a couple questions that did receive one response.
> The response has spawned a few more of my own questions and I have included
> the response in my conversation/further questions below. The original
> question is in red, and the response is also called-out and in red. The
> continuation question is in green. There are a couple new questions posed
> after the continued (green and red) question portion. Thanks for your help!
>
> 1) The customer makes extensive use of Seam 2 remoting for their banking
> security application. Is there an equivalent in CDI (Weld) that will allow
> them to continue using remoting? If not, what alternatives do we offer in
> it's place?
> Mailing List Response: You can take a look at Errai, or simply use JAX-RS.
> Q:  Seam 3 appears to have it's own remoting functionality available much
> like Seam 2. URL: http://seamframework.org/Seam3/RemotingModule
> As you'll note, there is a large disclaimer stating that active
> development for the project is halted and that the project is also
> deprecated. However, I feel that if the customer moves from Seam 2 remoting
> to Seam 3 remoting they will incur a smaller amount of work than if they
> were to consider adopting a new technology such as Errai or JAX-RS as
> you've suggested as best cases. While they are interested in adopting a
> better or more appropriate technology for their application, they still
> want to rapidly make the move to Seam 3/Solder/CDI/Weld in the meantime and
> I think this sets them up nicely for migrating the rest of the technologies
> over. What the customer is extremely interested in knowing is if these
> technologies now sitting as-is (3.1 Snapshot I believe) can be said to be
> categorically stable and functional currently for this sort of temporary
> use case with full knowledge they aren't supported moving forward? If so,
> are there any migration documents available? If no migration documents are
> available, do you have anywhere you can point me in order to get a head
> start on creating one myself for our client? Do you agree with this
> short-term-win approach?
>
> 2) The customer currently uses Seam-managed Hibernate Sessions: he guesses
> they are not supported in CDI and wishes to know what is the best way to go
> moving forward? For example, something that is more conforming to JPA2 was
> mentioned.
> Mailing List Response: Moving to a more standard JPA environment would be
> best
> Q: Here again, there seems to be a Seam 3 persistence module available as
> before and I wonder if the customer could utilize this in the short term
> while preparing for an adoption of a new persistence technology lsuch as,
> say, just Hibernate? The URL I'm referencing is:
> http://seamframework.org/Seam3/PersistenceModule
>
> 3) Given that components.xml is a large part of their implementation in
> Seam2, how can we break it up to conform with CDI/Weld/Seam3?
> Mailing List Response: All depends on what is in their components.xml,
> there's no simple answer here.
> Q: I agree with this response. I do, however, have a snapshot of the
> components.xml and I know that it needs to be broken up into a few
> different places. Does anyone have experience in doing this? Please reply
> and I will send you the components.xml document if you'd like to assist in
> helping me to map the pieces to the appropriate places. If there's
> sufficient documentation online, as always, please direct me to it.
>
>
> Lastly, if you're not tired of reading my questions yet there are a couple
> new ones below:
>
> *First new question:* "There used to be a class in Seam 2 called
> org.jboss.seam.faces.Redirect.   We use this a few times to force a
> redirect in different cases.
>
> for example:
>
> 1.      When user enters a valid URL but is not yet logged on;  view is
> captured and user returned to it after successful logon.
>
> 2.      When we detect that a user is no longer logged on;  we redirect to
> a "Logon expired page"
>
> So, the question is:   What do I replace this with?   I looked in Seam 3
> but it doesn't appear to have been implemented (at least not in the
> seam-faces jar)."
>
> *Second new question:* Regarding their current usage of Seam 2 "We use
> the class org.jboss.seam.async.Dispatcher to create long running threads in
> the container.   Can you tell me what I should use instead?"
>
> Again, if there are any documents or web sites that deal with these
> questions specifically regarding migration I would greatly appreciate
> having them sent to me.
>
> Thank You,
>
> Jon Da Vault
> Consultant
> 206.369.2304
>
>
> _______________________________________________
> seam-dev mailing list
> seam-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/seam-dev
>



-- 
Lincoln Baxter, III
http://ocpsoft.org
"Simpler is better."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/seam-dev/attachments/20140312/416538cc/attachment.html 


More information about the seam-dev mailing list