[JBoss Seam] - Re: Data separation in multi tenant applications with seam
by christian_zeidler
OK, so what I have dome is to create two managed-persistence-contexts in components.xml
<core:managed-persistence-context
| name="standardEntityManager"
| auto-create="true"
| persistence-unit-jndi-name="java:/standardEntityManagerFactory">
| </core:managed-persistence-context>
|
| <core:filter name="clientFilter">
| <core:name>clientFilter</core:name>
| <core:parameters>
| <key>clientId</key>
| <value>#{clientId}</value>
| </core:parameters>
| </core:filter>
|
| <core:managed-persistence-context
| name="filterEntityManager"
| auto-create="true"
| persistence-unit-jndi-name="java:/filteredEntityManagerFactory">
| <core:filters><value>#{clientFilter}</value></core:filters>
| </core:managed-persistence-context>
Then I added a @Factory Method for entityManager to Authenticator.java
@In
| EntityManager entityManager;
|
| @Factory("entityManager")
| public EntityManager selectEntityManager(){
| try{
| Context jndi = new InitialContext();
| if(identity.isLoggedIn()){
| EntityManagerFactory emf = (EntityManagerFactory) jndi.lookup("java:/filteredEntityManagerFactory");
| log.info("just set: " + "java:/filteredEntityManagerFactory");
| return emf.createEntityManager();
| }else{
| EntityManagerFactory emf = (EntityManagerFactory) jndi.lookup("java:/standardEntityManagerFactory");
| log.info("just set: " + "java:/standardEntityManagerFactory");
| return emf.createEntityManager();
| }
| }catch(NamingException e){
| log.info("error " + e.toString());
| return null;
| }
| }
|
Now when I run this and try to login, I get an exception:
20:55:47,143 ERROR [SeamLoginModule] Error invoking login method
| javax.faces.el.EvaluationException: Exception while invoking expression #{authenticator.authenticate}
| at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:153)
| at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper.java:58)
| at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:75)
| at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:148)
| at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:104)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
| at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
| at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706)
| at java.security.AccessController.doPrivileged(Native Method)
| at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703)
| at javax.security.auth.login.LoginContext.login(LoginContext.java:575)
| at org.jboss.seam.security.Identity.authenticate(Identity.java:247)
| at org.jboss.seam.security.Identity.authenticate(Identity.java:240)
| at org.jboss.seam.security.Identity.login(Identity.java:170)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at com.sun.el.parser.AstValue.invoke(AstValue.java:174)
| at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:286)
| at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
| at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
| at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
| at javax.faces.component.UICommand.broadcast(UICommand.java:106)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
| at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
| at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
| at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
| 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.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:79)
| 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:96)
| at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
| 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)
| Caused by: java.lang.NullPointerException
| at com.skyline.Authenticator.authenticate(Authenticator.java:62)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
| at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57)
| at org.jboss.seam.interceptors.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:34)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
| at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:47)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
| at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
| at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
| at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:151)
| at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:87)
| at com.skyline.Authenticator_$$_javassist_101.authenticate(Authenticator_$$_javassist_101.java)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
| ... 69 more
|
The nullpointerexception happens at line Users user = (Users) entityManager.createQuery(
| "from Users where user_name = :username and password = :password")
| .setParameter("username", Identity.instance().getUsername())
| .setParameter("password", Identity.instance().getPassword())
| .getSingleResult();
That's where the entityManager is first used... it doesn't seem to get innitiated in the @Factory method...
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050285#4050285
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050285
16 years, 11 months
[JBoss Seam] - Re: Simplest <s:fileUpload> usage
by evl123
"shane.bryzak(a)jboss.com" wrote :
|
| You need jboss-seam-ui.jar, and yes, <s:fileUpload> is the correct tag. It's documented in the controls chapter of the Seam reference documentation.
Thanks Shane.
Now, on the JSF Action Listener side, what class and from what jar file do I need for the uploaded file's Backing Bean to have Seam inject the uploaded file into?
jboss-seam-ui.jar is for front-end tag but I still couldn't find the backend bean to catch the file.
So far, I've only been successful following an example that uses primitive type byte[] with gives only size but not meta attributes like filename. I want to be able to upload in Seam in a similar way as done through Struts FormFile class.
Thanks again.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050283#4050283
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050283
16 years, 11 months
[EJB 3.0] - ClassCastException on JNDI lookup
by morisona
There is reason to beieve that this problem is easy (http://jira.jboss.com/jira/browse/EJBTHREE-456), but I have searched the forum and can not find exactly the same situation.
The easiest way to reproduce it is to take the calcualtor.jsp from the EJB3Trail, and put it in a seperate war along with trail.slsb.Calculator.class. I then get
| 20:12:40,859 ERROR [STDERR] java.lang.ClassCastException: $Proxy136
| 20:12:48,437 ERROR [STDERR] at org.apache.jsp.calculator_jsp.jspInit(calculator_jsp.java:19)
| 20:12:48,437 ERROR [STDERR] at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:78)
| 20:12:48,437 ERROR [STDERR] at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:155)
|
The relevent bit of code in the jsp is:
| InitialContext ctx = new InitialContext();
| cal = (Calculator) ctx.lookup(
| "EJB3Trail/StatelessCalculator/local");
|
On the JMX JNDI screen I have:
| +- EJB3Trail (class: org.jnp.interfaces.NamingContext)
| ........
| | +- StatelessCalculator (class: org.jnp.interfaces.NamingContext)
| | | +- local (proxy: $Proxy136 implements interface trail.slsb.Calculator,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
|
Any help and I would be infinitely greatful.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050280#4050280
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050280
16 years, 11 months
[JBoss Seam] - Wrong datatable var type
by limousyf
Hello,
I used the clickable list example described in chapter 1.3 in the reference guide to create my own list page, but I have some:
javax.faces.el.PropertyNotFoundException
when I try to display the datatable
The weird thing is that the same Object is in the DataModel and in the "var" of my datatable:
| certif com.fitnetapplication.certifications.entity.CertificationList@1faa588
| certificationList com.fitnetapplication.certifications.entity.CertificationList@1faa588
|
(This comes from the debug page)
Here is my bean code :
| @Stateless
| @Name("myCertifications")
| public class MyCertificationsBean implements MyCertifications {
|
| @Logger private Log log;
|
| @In FacesMessages facesMessages;
|
| @DataModel
| private List<Certification> certificationList;
|
| @DataModelSelection
| @Out(required=false)
| private Certification certification;
|
| @In(value="entityManager")
| private EntityManager em;
|
| @In(value="loggedCollaborateur", required=false, create=true)
| Collaborateur loggedCollaborateur;
|
| @Factory("certificationList")
| public void findMessages()
| {
|
| (...) blablabla, I'm fetching all my list (...)
|
| }
|
My page :
| <h:dataTable id="certificationList"
| var="certif"
| value="#{certificationList}" >
| <h:column>
| <f:facet name="header">
| <s:link styleClass="columnHeader"
| value="certificationId #{certificationList.order=='certificationId asc' ? messages.down : ( certificationList.order=='certificationId desc' ? messages.up : '' )}">
| <f:param name="order" value="#{certificationList.order=='certificationId asc' ? 'certificationId desc' : 'certificationId asc'}"/>
| </s:link>
| </f:facet>
| <h:outputText value="#{certif.certificationId}"></h:outputText>
| </h:column>
|
| etc (...)
|
I also tried with a rich:datatable but it didn't change.
What am I doing wring here ?
Why isn't there any "Certification" objects in my "certif" var in the jsf page ?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050275#4050275
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050275
16 years, 11 months