[JBoss Seam] - Another conversation question: how to correctly begin one??
by MSchmidke
There are a lot of possibilities for starting a conversation, but I still am not sure which is the best for the most cases. What do you think?
1. Beginning a conversation by action method
| public class MainMenuBean {
|
| @Begin(flushMode=FlushModeType.MANUAL)
| public String doUsecase1() {
| return "/pages/usecase1";
| }
|
| @Begin(flushMode=FlushModeType.MANUAL)
| public String doUsecase2() {
| return "/pages/usecase2";
| }
| }
|
- violates DRY (specify flushmode everytime, for example)
- scatters business logic (why should my menu bean be aware of the flushmode my component intends to use?)
2. Beginning a conversation by <begin-conversation flush-mode="MANUAL"> in pages.xml.
- violates DRY
- scatters business logic (program logic details in a xml file? why??).
- impossible to reload the page ("begin called from long running ...")
3. Create a page action method annotated with @Begin(flushMode=MANUAL)
+ Parameters concerning program logic at the right place (in the class which makes use of their functionality)
+ DRY-aware (put page action method in a common base class)
- impossible to reload the page
4. Use #{conversation.begin}
- same as 2
5. Annotate the @Create method with @Begin
+ Parameters at the right place
+ DRY
+ possible to reload the page
Until yesterday, I feeled that (5) was the best possibility, but as you have probably read, I found out that this does not work with page parameters. In fact, (1) seems to be the only variant which works in that situation.
What do you use?
Marcus.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121598#4121598
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121598
18 years, 5 months
[JBoss Seam] - Re: Component Architecture instead of traditional Layers
by ruettimac
Hi,
I tried a small example today (with glassfish) and failed to create it. There is a thread and a JIRA-Issue failed against this problem:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=123592
and
http://jira.jboss.org/jira/browse/JBSEAM-2430
What's happening here is, that the beans are not found in JNDI:
|
|
| Caused by: javax.naming.NameNotFoundException: No object bound to name java:comp/env/trainingplatform/CustomerPreferencesAction/local
| at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:834)
| at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
| at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:396)
| at javax.naming.InitialContext.lookup(InitialContext.java:392)
| at org.jboss.seam.Component.instantiateSessionBean(Component.java:1287)
|
|
But If you look at the startup debug lines, you see that the component is bound to this JNDI-Entry:
Component: customerPreferences, scope: CONVERSATION, type: STATEFUL_SESSION_BEAN, class: ch.hcrtraining.trainingplatform.customer.facade.CustomerPreferencesAction, JNDI: java:comp/env/trainingplatform/CustomerPreferencesAction/local
Something strange goes on here. Since I have not Scope.Session, even the proposed @Startup does not work.
anonymous wrote : b) Are there any problems regarding the different seam scopes like CONVERSATION and long running CONVERSTAION scopes beans?
My concerns are regarding the transaction handling of the wired components. Is the transaction management of the caller master? Otherwise, the called component can open and flush the transaction ...
Regards,
Cyrill
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121592#4121592
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121592
18 years, 5 months
[JBoss Seam] - Re: FailedConfiguration while running test
by hubaghdadi
I use Seam 2.0 GA, JDK6, JBoss4.2, Ubuntu 7.10
I dropped my Ant build file and used the one that is generated by seam-gen tool, but this time I got this exception:
| [testng] ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Instantiated: name=DeploymentFilter state=Described
| [testng] java.lang.IllegalStateException: Class not found: [Ljava.lang.String;
| [testng] at org.jboss.metadata.spi.signature.Signature.stringsToClasses(Signature.java:174)
| [testng] at org.jboss.metadata.spi.signature.Signature.stringsToClasses(Signature.java:125)
| [testng] at org.jboss.metadata.spi.signature.Signature.getParametersTypes(Signature.java:292)
| [testng] at org.jboss.metadata.plugins.loader.reflection.AnnotatedElementMetaDataLoader.getComponentMetaDataRetrieval(AnnotatedElementMetaDataLoader.java:138)
| [testng] at org.jboss.metadata.plugins.context.AbstractMetaDataContext.getComponentMetaDataRetrieval(AbstractMetaDataContext.java:280)
| [testng] at org.jboss.metadata.spi.retrieval.MetaDataRetrievalToMetaDataBridge.getComponentMetaData(MetaDataRetrievalToMetaDataBridge.java:159)
| [testng] at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.methodHasAnnotations(AOPConstructorJoinpoint.java:202)
| [testng] at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.hasMethodMetaData(AOPConstructorJoinpoint.java:172)
| [testng] at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.hasInstanceOrJoinpointMetaData(AOPConstructorJoinpoint.java:152)
| [testng] at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.dispatch(AOPConstructorJoinpoint.java:99)
| [testng] at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:103)
| [testng] at org.jboss.kernel.plugins.dependency.InstantiateAction.installActionInternal(InstantiateAction.java:52)
| [testng] at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:197)
| [testng] at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.install(KernelControllerContextAction.java:136)
| [testng] at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
| [testng] at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:233)
| [testng] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:724)
| [testng] at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:445)
| [testng] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:555)
| [testng] at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:489)
| [testng] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:289)
| [testng] at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:192)
| [testng] at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBean(AbstractKernelDeployer.java:302)
| [testng] at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBeans(AbstractKernelDeployer.java:272)
| [testng] at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deploy(AbstractKernelDeployer.java:119)
| [testng] at org.jboss.kernel.plugins.deployment.xml.BeanXMLDeployer.deploy(BeanXMLDeployer.java:96)
| [testng] at org.jboss.embedded.Bootstrap.deployBaseBootstrapUrl(Bootstrap.java:150)
| [testng] at org.jboss.embedded.Bootstrap.bootstrapURL(Bootstrap.java:162)
| [testng] at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:201)
| [testng] at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:214)
| [testng] at org.jboss.seam.mock.EmbeddedBootstrap.startAndDeployResources(EmbeddedBootstrap.java:11)
| [testng] at org.jboss.seam.mock.BaseSeamTest.startJbossEmbeddedIfNecessary(BaseSeamTest.java:1006)
| [testng] at org.jboss.seam.mock.BaseSeamTest.init(BaseSeamTest.java:931)
| [testng] at org.jboss.seam.mock.SeamTest.init(SeamTest.java:42)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| [testng] at java.lang.reflect.Method.invoke(Method.java:597)
| [testng] at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:604)
| [testng] at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:394)
| [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
| [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:79)
| [testng] at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:165)
| [testng] at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:103)
| [testng] at org.testng.TestRunner.runWorkers(TestRunner.java:678)
| [testng] at org.testng.TestRunner.privateRun(TestRunner.java:624)
| [testng] at org.testng.TestRunner.run(TestRunner.java:495)
| [testng] at org.testng.SuiteRunner.runTest(SuiteRunner.java:300)
| [testng] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:295)
| [testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:275)
| [testng] at org.testng.SuiteRunner.run(SuiteRunner.java:190)
| [testng] at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:792)
| [testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:765)
| [testng] at org.testng.TestNG.run(TestNG.java:699)
| [testng] at org.testng.TestNG.privateMain(TestNG.java:824)
| [testng] at org.testng.TestNG.main(TestNG.java:802)
| [testng] Caused by: java.lang.ClassNotFoundException: [Ljava.lang.String;
| [testng] at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
| [testng] at java.security.AccessController.doPrivileged(Native Method)
| [testng] at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
| [testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
| [testng] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
| [testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
| [testng] at org.jboss.metadata.spi.signature.Signature.stringsToClasses(Signature.java:170)
| [testng] ... 55 more
| [testng] FAILED CONFIGURATION: @BeforeClass init
| [testng] org.jboss.deployers.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
| [testng]
| [testng] *** CONTEXTS MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}
| [testng]
| [testng] ResourcesToDeploy
| [testng] -> DeploymentFilter{Configured:**ERROR**}
| [testng]
| [testng] ResourcesToDeploy2
| [testng] -> DeploymentFilter{Configured:**ERROR**}
| [testng]
| [testng] ResourcesToDeploy3
| [testng] -> jboss.kernel:service=Kernel{Configured:**ERROR**}
| [testng] -> DeploymentFilter{Configured:**ERROR**}
| [testng]
| [testng]
| [testng] *** CONTEXTS IN ERROR: Name -> Error
| [testng]
| [testng] DeploymentFilter -> java.lang.ClassNotFoundException: [Ljava.lang.String;
| [testng]
| [testng] jboss.kernel:service=Kernel -> **ERROR**
| [testng]
| [testng]
| [testng] at org.jboss.embedded.Bootstrap.checkIncomplete(Bootstrap.java:144)
| [testng] at org.jboss.embedded.Bootstrap.bootstrapURL(Bootstrap.java:169)
| [testng] at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:201)
| [testng] at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:214)
| [testng] at org.jboss.seam.mock.EmbeddedBootstrap.startAndDeployResources(EmbeddedBootstrap.java:11)
| [testng] at org.jboss.seam.mock.BaseSeamTest.startJbossEmbeddedIfNecessary(BaseSeamTest.java:1006)
| [testng] at org.jboss.seam.mock.BaseSeamTest.init(BaseSeamTest.java:931)
| [testng] at org.jboss.seam.mock.SeamTest.init(SeamTest.java:42)
| [testng] ... Removed 22 stack frames
| [testng] SKIPPED CONFIGURATION: @BeforeMethod begin
| [testng] SKIPPED CONFIGURATION: @AfterMethod end
| [testng] SKIPPED CONFIGURATION: @AfterClass cleanup
| [testng] SKIPPED: siimulateBijection
|
Do you have some Panadol bills?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121580#4121580
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121580
18 years, 5 months
[JBoss Seam] - Re: Seam with Hibernate Search
by neilac333
True enough. When combined with Seam, HS allows you to inject the FullTextEntityManager directly.
However, what I am doing is still correct--at least theoretically. It is basically what is found in the DVDStore example but with one catch. In that case, the JPA EntityManager is injected by Seam, but the EM is really the superinterface abstraction of an FTEM. So the FTEM is obtained by simply downcasting the EM.
In my case, the call to Search.createFullTextEntityManager(em) does the same thing. If the em parameter is actually an FTEM instance, then the downcast is returned. If it isn't, some other magic happens to turn the EM into an FTEM. If you are really bored, check out Emmanuel's code yourself.
Yet having said all this, if I can't actually figure out what's going on, I might just have the FTEM injected and see what happens.
Thanks.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121579#4121579
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121579
18 years, 5 months