Используется JBoss4.0.4RC1
Необходимо сделать аунтефикацию через JAAS, чтобы пользователи хранились в базе данных. Толстый java-swing клиент.
Добавил application-policy
login-config.xml
<application-policy name="standartEmercomSecurityDomain">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="debug">true</module-option>
<module-option name="dsJndiName">java:/StandartDS</module-option>
<module-option name="principalsQuery">select SYUSR_PASSWORD from SY_USER where SYUSR_NAME=?</module-option>
</login-module>
</authentication>
</application-policy>
jboss.xml
<?xml version="1.0"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
<security-domain>java:/jaas/standartEmercomSecurityDomain</security-domain>
<enterprise-beans>
<session>
<ejb-name>UsersFacade</ejb-name>
<jndi-name>UsersFacade</jndi-name>
</session>
<session>
<ejb-name>CommonsFacade</ejb-name>
<jndi-name>CommonsFacade</jndi-name>
</session>
</enterprise-beans>
</jboss>
На клиенте получю бины из xml, в котором указываю пользователя "qwe" и пароль "1", в базе такая запись есть.
<beans>
<bean id="serverTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
<prop key="java.naming.provider.url">onezerone:1099</prop>
<prop key="java.naming.security.principal">qwe</prop>
<prop key="java.naming.security.credentials">1</prop>
</props>
</property>
</bean>
<bean id="usersService" class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
<property name="jndiName" value="UsersFacade"/>
<property name="businessInterface" value="ru.icl.ios.standart.service.UsersService"/>
<property name="jndiTemplate" ref="serverTemplate"/>
</bean>
<bean id="commonsService" class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
<property name="jndiName" value="CommonsFacade"/>
<property name="businessInterface" value="ru.icl.ios.standart.service.CommonsService"/>
<property name="jndiTemplate" ref="serverTemplate"/>
</bean>
</beans>
String path = "applicationContext-ejb.xml";
ctx = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new ClassPathResource(path));
ctx.refresh();
...
UsersService usersService = (UsersService)ctx.getBean("usersService");
usersService.ВызовБизнесМетода();
Говорит, что пользователь не найден. Решил узнать, какое все таки имя пользователя передается параметром в principalsQuery и выставил
<module-option name="principalsQuery">update SY_USER set SYUSR_NOTE=?</module-option>
после чего в поле SYUSR_NOTE пишется NULL
Расскажите плиз, где я не прав
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>