[JBoss Seam] - Re: Strange Outjection Problems
by toni
To reproduce the error I wrote the following:
Bean
|
| @Name("test")
|
| public class Test implements Serializable
| {
| String text;
|
|
| public String getText()
| {
| return text;
| }
|
| public void setText(String text)
| {
| this.text = text;
| }
|
| public String toString()
| {
| return text;
| }
| }
SFSB
| @Stateful
| @Name("testOutjection")
|
| public class TestOutjection implements BasicTestOutjection
| {
| @In(create = true)
| EntityManager entityManager;
|
| @Out(required = false)
| Test test;
|
| @Begin(join = true)
| public String outject()
| {
| test = new Test();
| test.setText("outject");
| return "test";
| }
|
|
| public String inject()
| {
| test.setText("inject");
| return "test";
| }
|
|
| @Destroy
| @Remove
| public void destroy()
| {
|
| }
| }
|
JSF view
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
| <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
| <%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %>
|
| <f:view>
|
| <h:panelGrid>
|
| <h:form>
| <s:validateAll>
|
|
| <h:commandButton type="submit" value="Outject" action="#{testOutjection.outject}"/>
|
| <h:commandButton type="submit" value="Inject" action="#{testOutjection.outject}"/>
|
| </s:validateAll>
|
| </h:form>
|
| <h:messages/>
|
| </h:panelGrid>
|
| </f:view>
I used the seam.debug page to look at the conversation. The Test Bean never shows up.
I finally figured out why. Adding the following line to the @Out annotation will make it appear.
scope = ScopeType.CONVERSATION
Is that correct? Nowhere in my code I have been using this line, but I need it now. I think that it used to work well without it.
Arent seam components outjected into the default scop of the component from where they are outjected from? And isn't the default scope CONVERSATION for SFSB?
If somebody can maybe briefly explain this and if it has changed between releases?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4013745#4013745
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4013745
19Â years, 2Â months
[Security & JAAS/JBoss] - JAAS login problem on JBoss 4.0.5.GA with clustered single s
by cjlogan
We are running JBoss 4.0.5.GA with clustered single sign-on across 2 servers. These servers are round-robin load-balanced using Windows Network Load Balancing, so user requests are being processed by both servers. We are NOT using mod_jk, but have Apache servers in our DMZ that forward requests to a load-balanced IP that causes WNLB to cause the request to be handled by one of the servers based upon the load-balancing options.
About 75% of the time, users get the response "Invalid direct reference to form login page". At that point, the browser URL is http://server/context/admin/j_security_check. I am not trying to directly access the form login page. Instead, it appears that the FormAuthenticator cannot access the previous page for the user, so they get sent to the j_security_check page.
When one of the servers is taken out of the WNLB cluster, so that all requests go to the same server (even though HTTP session replication is still operating), it works 100% of the time.
>From looking at the FormAuthenticator code, it appears that this is the relevant portion to this problem:
| public boolean authenticate(Request request,
| Response response,
| LoginConfig config)
| throws IOException {
| ...
| // Redirect the user to the original request URI (which will cause
| // the original request to be restored)
| requestURI = savedRequestURL(session);
| if (log.isDebugEnabled())
| log.debug("Redirecting to original '" + requestURI + "'");
| if (requestURI == null)
| response.sendError(HttpServletResponse.SC_BAD_REQUEST,
| sm.getString("authenticator.formlogin"));
| else
| response.sendRedirect(response.encodeRedirectURL(requestURI));
| return (false);
| }
|
The "then" if(requestURI == null) is returning the error page described above.
Here is where I make an assumption about the cause of the problem: Is the session being replicated based upon the replication-trigger in the jboss-web.xml? Please let me know if I can provide more information.
Here is the log file from server1:
2007-02-07 11:20:29,093 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request POST /cms/admin/j_security_check
| 2007-02-07 11:20:29,249 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Authenticating username 'keithc'
| 2007-02-07 11:20:29,265 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Authentication of 'keithc' was successful
| 2007-02-07 11:20:29,265 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Redirecting to original '/cms/admin/mainMenu.do'
| 2007-02-07 11:20:29,265 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Failed authenticate() test ??/cms/admin/j_security_check
>From the tomcat server.xml:
<Valve className="org.jboss.web.tomcat.tc5.sso.ClusteredSingleSignOn"/>
|
The SingleSignOn value is disabled.
Here are the relevant portions of the web.xml:
| <distributable/>
| ...
| <security-constraint>
| <web-resource-collection>
| <web-resource-name>Administrator Area</web-resource-name>
| <url-pattern>/admin/addKiosk.jsp</url-pattern>
| ...
| </web-resource-collection>
| <auth-constraint>
| <role-name>Admin</role-name>
| </auth-constraint>
| <user-data-constraint>
| <transport-guarantee>NONE</transport-guarantee>
| </user-data-constraint>
| </security-constraint>
| ...
| <login-config>
| <auth-method>FORM</auth-method>
| <realm-name>CMSDbRealm</realm-name>
| <form-login-config>
| <form-login-page>/login.jsp</form-login-page>
| <form-error-page>/login_error.jsp</form-error-page>
| </form-login-config>
| </login-config>
|
Here are the relevant portions of the login-config.xml:
| <application-policy name="CMSDbRealm">
| <authentication>
| <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
| <module-option name="unauthenticatedIdentity">guest</module-option>
| <module-option name="dsJndiName">java:/HibernateDS</module-option>
| <module-option name="unauthenticatedIdentity">guest</module-option>
| <module-option name="managedConnectionFactoryName">
| jboss.jca:service=LocalTxCM,name=HibernateDS
| </module-option>
| <module-option name="principal">sa</module-option>
| <module-option name="userName">username</module-option>
| <module-option name="password">password</module-option>
| <module-option name="principalsQuery">select password from CMS_USER
| username where username=?
| </module-option>
| <module-option name="rolesQuery">select distinct role_name, 'Roles'
| from CMS_USER_PRIVILEGE inner join CMS_USER on user_id = fk_user_id where
| username=?
| </module-option>
| <module-option name="hashCharset">UTF-8</module-option>
| <module-option name="hashEncoding">base64</module-option>
| <module-option name="hashAlgorithm">MD5</module-option>
| </login-module>
| </authentication>
| </application-policy>
|
jboss-web.xml:
<jboss-web>
| <security-domain>java:/jaas/CMSDbRealm</security-domain>
| <context-root>/cms</context-root>
| <replication-config>
| <replication-trigger>SET</replication-trigger>
| <replication-granularity>SESSION</replication-granularity>
| </replication-config>
| </jboss-web>
tc5 jboss-service.xml
<server>
| <mbean code="org.jboss.cache.aop.TreeCacheAop" name="jboss.cache:service=TomcatClusteringCache">
| <depends>jboss:service=Naming</depends>
| <depends>jboss:service=TransactionManager</depends>
| <depends>jboss.aop:service=AspectDeployer</depends>
| <attribute name="ClusterName">RT-CLUSTER</attribute>
| <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
| <attribute name="CacheMode">REPL_SYNC</attribute>
| <attribute name="UseRegionBasedMarshalling">false</attribute>
| <attribute name="InactiveOnStartup">false</attribute>
| <attribute name="TransactionManagerLookupClass">org.jboss.cache.BatchModeTransactionManagerLookup</attribute>
| <attribute name="ClusterConfig">&jgroupsstack;</attribute>
| <attribute name="SyncReplTimeout">20000</attribute>
| <!-- Max number of milliseconds to wait for a lock acquisition -->
| <attribute name="LockAcquisitionTimeout">15000</attribute>
| </mbean>
| </server>
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4013740#4013740
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4013740
19Â years, 2Â months