[Beginners Corner] - Benefits of using JBoss product suite for distributed system
by scrut
As I am starting a new project, I am wondering what the benefits of using JBoss products are as supposed to something like Tomcat + Axis + Torque + POJO.
As you can see in the following images, I am about to build a distributed system with one job manager and several job handlers. Each node may be on a different server.
The job manager has a web interface where a user can enter a command which is then passed to one of the n job handlers via SOAP message.
The job handler then reads mails, web sites and other documents (which may take up to several hours).
Once the job is completed, the job handler contacts the job dispatcher and submits the results of the performed queries.
That's all. No heavy duty DB stuff, just distributed data processing.
DBMS are only for log files and such.
What does JBoss provide for developing this?
What are the advantages of a JBoss based approach rather than Tomcat/Axis/WAR?
Thanks a lot!
Overview of my project:
[img]http://www.cmklein.de/Overview.gif[/img]
Details of my project:
[img]http://www.cmklein.de/Details.gif[/img]
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085526#4085526
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4085526
18 years, 10 months
[JBoss Seam] - Re: Feature request regarding nested conversations
by jacob.orshalick
wschwendt,
I completely understand your problem, but it seems that most of the posts I see about nested conversations are somewhat puzzling to me so I would like to hear some opinions on their usage.
I have been using nested conversations in situations where I require a continuation server implementation. After a lot of thought, it seemed that this was the most logical usage of nested conversations given their state snapshot behavior. I have successfully implemented some very complex page flows with master-details editing relationships and all issues with the back button have been alleviated. The user is free to navigate as they please!
The main issue that comes in with conversations is the master-details editing where the master controls the persistence of the data. For example, a Person and their Addresses:
1. Select Person for editing which displays a Person edit screen
2. Select Add Addresses which forwards to a secondary screen
3. Addresses are added and the screen is submitted which updates the in-memory Person
4. The Person edit screen is redisplayed with the Addresses added
5. The user then uses the back button to return to the original Person edit screen and submits which persists Person with new addresses
If a single long-running conversation was used, you end up submitting addresses that were not intended by the user (at least not what they saw on the browser-cached edit screen) since the Person was updated in the conversation context. If the conversation is nested for the Address details screen, the addition of addresses does not affect the outer conversation. In other words, we have a snapshot of state prior to adding the Addresses.
We do NOT end this conversation when the Addresses are submitted. Instead we continue the nested conversation on the new Person edit screen. Now, if the user was to back up to the original Person edit screen, the snapshot of conversation state is restored (the outer conversation) unaffected by the user's actions. If the user then submits, the state is persisted consistent with what the user "sees."
By updating the outer (parent) conversation backing up to the original Person edit screen has the same effect as using a single long-running conversation. Data is persisted that the user did not intend. This is because we no longer have a snapshot of the browser cached state at that time.
I hope this makes sense. If not, I can clarify. Thanks.
...
By the way, a workaround in regards to updating parent conversation state you can always use a non-Seam POJO which maintains mutable state. Any class not annotated with @Name, will not be managed by Seam and thus, will not be reverted back to the outer conversation state when a nested conversation ends. All changes to the internal state of the object will stick in the outer conversation.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085522#4085522
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4085522
18 years, 10 months
[JBoss Seam] - s:fileUpload using tempFile fails with an OutOfMemoryError
by pingus
I've successfully configured the MultipartFilter in Seam 1.2.1.GA to use a temp file and to use a max. file size of 1GB (1073741824). The users will upload mid size videos.
When uploading a ~170MB file everything works, but uploading a ~550MB file raises an OutOfMemoryError.
2007-09-18 15:33:36,103 ERROR [org.jboss.seam.web.ExceptionFilter] uncaught exception
| javax.servlet.ServletException: Java heap space
| at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
| at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:74)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
| at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
| at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
| at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
| at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
| at java.lang.Thread.run(Thread.java:595)
| 2007-09-18 15:33:36,105 ERROR [org.jboss.seam.web.ExceptionFilter] exception root cause
| java.lang.OutOfMemoryError: Java heap space
| at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:95)
| at org.jboss.seam.web.MultipartRequest$FileParam.getData(MultipartRequest.java:217)
| at org.jboss.seam.web.MultipartRequest.getFileBytes(MultipartRequest.java:523)
| at org.jboss.seam.ui.UIFileUpload.decode(UIFileUpload.java:61)
| at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:606)
| at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
| at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
| at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
| at javax.faces.component.UIForm.processDecodes(UIForm.java:53)
| at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:602)
| at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:135)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot.access$001(AjaxViewRoot.java:53)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot$1.invokeRoot(AjaxViewRoot.java:256)
| at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:53)
| at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:191)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot.processDecodes(AjaxViewRoot.java:272)
| at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues(LifecycleImpl.java:219)
| at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:71)
| at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
| at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
| at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
| at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:74)
| 2007-09-18 15:33:36,322 ERROR [org.jboss.seam.exceptions.DebugPageHandler] redirecting to debug page
The temporary file seems to be complete. Its size equals the original size.
Environment: JBoss 4.0.5, Seam 1.2.1.GA, Sun JDK 1.5.0_12 (64)
What do you think? Anyone else using such big file uploads?
Pingus
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085520#4085520
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4085520
18 years, 10 months