我尝试使用https://github.com/apereo/cas-overlay-template启动并运行CAS服务器作为辅助项目(我是学生),但我以前从未使用过maven或spring。
我试图将自己的IPersonAttributeDao挂钩到CAS服务器中。但是,当我将deployerConfigContext.xml放在src/main/webapp/WEB-INF/
下时,当我重新打包(使用构建脚本)并部署到tomcat8时,实际上没有任何改变。 (是的,我确实重启了tomcat)。
在我的deployerConfigContent.xml文件的内容下面
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<bean id="authenticationManager" class="org.jasig.cas.authentication.AuthenticationManagerImpl">
<property name="credentialsToPrincipalResolvers">
<list>
<bean id="primaryPrincipalResolver"
class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver">
<property name="attributeRepository" ref="attributeRepository"/>
</bean>
<bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver">
<property name="attributeRepository" ref="attributeRepository"/>
</bean>
<bean class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver">
<property name="attributeRepository" ref="attributeRepository"/>
</bean>
</list>
</property>
<property name="authenticationHandlers">
<list>
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<!-- Login stays the default casuser:Mellon, no idea why -->
<entry key="test" value="1234"/>
</map>
</property>
</bean>
<!-- DO NOT EVER PUT THIS BEAN IN PRODUCTION!!! -->
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>
</list>
</property>
</bean>
<!-- <bean id="attributeRepository" class="class.i.am.trying.to.hook.in">
</bean>-->
<!-- This doesn't seem to work -->
<bean id="attributeRepository"
class="org.jasig.services.persondir.support.StubPersonAttributeDao">
<property name="backingMap">
<map>
<entry key="uid" value="uid" />
<entry key="eduPersonAffiliation" value="eduPersonAffiliation" />
<entry key="groupMembership" value="groupMembership" />
</map>
</property>
</bean>
</beans>
我错过了什么?
更新:
我重读了文档(https://apereo.github.io/cas/5.0.x/),发现deployerConfigContext.xml应该在resources
中,而不是在webapp/WEB-INF
中,就像我在互联网上找到的那样。我移动它,现在我终于在日志中出现错误(这意味着正在读取文件)。
以下错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.jasig.cas.authentication.PolicyBasedAuthenticationManager] for bean with name 'authenticationManager' defined in class path resource [deployerConfigContext.xml]
我在文档中找到了对PolicyBasedAuthenticationManager
的引用,但尝试了同样的错误(使用了其他类名)。
答案 0 :(得分:0)
必须在bean归档中部署已启用Bean的Bean类。
库jar,EJB jar,应用程序客户端jar或rar存档是一个 bean存档,如果它在META-INF中有一个名为beans.xml的文件 目录。战争的WEB-INF / classes目录是一个bean归档文件 在战争的WEB-INF目录中有一个名为beans.xml的文件。一个 JVM类路径中的目录是一个bean归档,如果它有一个文件 在META-INF目录中命名为beans.xml。
一个建议,如果你使用的是Spring,你也可以设置@Annotation来定义bean。