11 Replies Latest reply on Aug 22, 2006 11:22 PM by smokingapipe

    Praise for Seam

    smokingapipe

      I just want to say, Seam is pretty damn amazing. It finally makes web development right by letting us use correct object-oriented design, and have that link in with persistence and web presentation in a sane way. No more Servlets, no more messy JSP. I put all my constraints right into my entity classes, where they should be. I write no more SQL. I never look at a HttpServletRequest again.

      Getting everything set up and working was a big challenge. One little mistake somewhere and there's an exception that doesn't tell you what's wrong. But once it's going, it's quite a powerful tool.

        • 1. Re: Praise for Seam
          zzzz8

          Amen brother! I agree that the setup and configuration are by far the most difficult steps - I especially found that out since I'm using the Embeddable EJB 3.0 microcontainer. I think I still need to resolve some configuration issues (i.e. logging configuration, etc.)

          And I still seem to be running into some weird and strange, hard to explain issues which may be due to configuration or my ignorance since I'm a newbie.

          I'm also planning to integrate Seam with Facelets and ICEfaces in the future... so hopefully there won't be any integration issues among these three technologies...

          • 2. Re: Praise for Seam
            smokingapipe

            By the way, here's my next feature request for Seam:

            I love that I can use annotations for so many things now, including form input validation. That's great!

            The one thing I find I need the most though is automatic form generation. The reason is: The current business cycle for web development is people want a demo / prototype FAST. They want to see something working right away. Some annotations that would let me quickly and automatically generate forms from objects would be great. They don't need to look pretty, but they need to function.

            That's my wish list.

            Oh, and also better debugging capabilities. It is crazy-difficult to track things down when the app isn't working right and the bug is some minor XML thing. For example, I didn't have a seam.properties at first. It just needs to be there as an empty file. If it isn't there there should be a simple message in the exception, something like, "you must have a seam.properties file to use Seam, and I couldn't find it in the classloader."

            • 3. Re: Praise for Seam
              theute

               

              "SmokingAPipe" wrote:
              For example, I didn't have a seam.properties at first. It just needs to be there as an empty file. If it isn't there there should be a simple message in the exception, something like, "you must have a seam.properties file to use Seam, and I couldn't find it in the classloader."


              Well seam.properties acts as a token so that we don't scan every archive, we cannot warn every application that seam.properties is missing because not all applications are Seam applications (yet ;) )

              I agree that we could help debugging on other things, we need your input (as users) here.

              • 4. Re: Praise for Seam
                smokingapipe

                 

                "thomas.heute@jboss.com" wrote:
                Well seam.properties acts as a token so that we don't scan every archive, we cannot warn every application that seam.properties is missing because not all applications are Seam applications (yet ;) )


                Ah that makes sense.

                I agree that we could help debugging on other things, we need your input (as users) here.


                Yes, a simple message like "I couldn't find a seam.properties in any archive, so Seam won't work" would really help with that.

                One thing I am finding about Seam is that Seam applications are fragile. It does take longer to develop in Seam because you can spend two days wondering why something isn't working and nothing gives you any clues. And then if things partially work it is even harder to figure it out. This is unfortunate. It seems like it should be the ideal way to develop apps but it is really not easy to use. (Obviously Seam isn't intended for people who are not very experienced in Java.)

                • 5. Re: Praise for Seam
                  maxandersen

                  if you look in the log such a message should be there...

                  • 6. Re: Praise for Seam
                    smokingapipe

                    Ah, I'm glad it's there. I have it working, and it's pretty cool that I can put properties for my components right there in seam.properties.

                    But still, Seam is a fragie framework. Right now here is some code I'm working on.

                    A simple JavaBean, with event scope:

                    @Name("requestBean")
                    @Scope(ScopeType.SESSION)
                    @Intercept(InterceptionType.ALWAYS)
                    public class RequestBean implements Serializable {
                    
                     private String message = null;
                    
                     public void setMessage(String s) { }
                    
                     public String getMessage() {
                    logger.info("caling getMessage!!!!"); return "Super message: " + new Date(); }
                    
                    }
                    


                    • 7. Re: Praise for Seam
                      smokingapipe

                      (Woops, I hit submit before I was ready.)

                      Anyway, so that's the bean.

                      And then I have this in foo.jsp:

                      <f:view>
                      <p>
                       <h:outputText value="#{requestBean.message}" />
                      </p>
                      <f:view>
                      


                      Should always work, right? The requestBean has EVENT scope, so it's available in every page. "message" is obviously a property of the RequestBean, because it has a getter and setter.

                      But it does not work. I get this exception:

                      javax.faces.el.PropertyNotFoundException: Expression: '#{requestBean.message}'
                       at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:392)
                      


                      Seam is fragile. From the docs, EVENT scope means "every request". The property is there. How can Seam not find it?


                      • 8. Re: Praise for Seam
                        smokingapipe

                        By the way, should I file this as a bug?

                        • 9. Re: Praise for Seam
                          smokingapipe

                          I converted the JavaBean to a stateful session bean, and set up the interface, and it still crashes it. I'm completely baffled. I can't see the difference between it and my other stateful session beans which do work. How has Seam decided that the message property of this thing doesn't exist? Seam seems to do random things sometimes.

                          • 10. Re: Praise for Seam
                            gavin.king

                             

                            "SmokingAPipe" wrote:

                            The one thing I find I need the most though is automatic form generation. The reason is: The current business cycle for web development is people want a demo / prototype FAST. They want to see something working right away. Some annotations that would let me quickly and automatically generate forms from objects would be great. They don't need to look pretty, but they need to function.


                            I have been thinking over doing something like this, and I designed some stuff, but no promises.

                            • 11. Re: Praise for Seam
                              smokingapipe

                              I also worked on this some. I did some annotations for it, but never really got it where I wanted it to. I may try again. That would be so cool to have. I spend too much time laying out forms.