利用PerimissionTest中的testService

06-06-06 jacal
请教banq,我看了jdon框架下的PermissionTest的例子很有启发,现在想在jdonNews下把这部分加入进去,我对几个配置文件都做了相应配置:

jdonframework.xml中加入了:

<pojoService name="testService" class="com.jdon.news.service.TestServicePOJOImp"/>
<p>

却报了错误信息:

2006-06-06 18:41:13 ERROR [ContainerRegistry.java:103] com.jdon.container.builder.ContainerRegistry.createClass() -  createClass:java.lang.ClassNotFoundException: com.jdon.news.service.TestServicePOJOImp
2006-06-06 18:41:13  WARN [PicoContainerWrapper.java:111] com.jdon.container.pico.PicoContainerWrapper.register() -  registe error: testService
2006-06-06 18:41:13  INFO [ContainerDirector.java:71] com.jdon.container.builder.ContainerDirector.startup() -  <========  Jdon Framework started successfully! =========>
<p>

com.jdon.news.service.TestServicePOJOImp肯定在,但怎么会有这个错误信息?

是不是什么地方还需要配置?

jacal
2006-06-07 18:15
这个问题一直困扰着了,没法往下进行。麻烦banq看一下。

上页面报错主要是

javax.servlet.ServletException: getPageIterator's result is null, check your ModelListAction subclass

仔细分析日志才发现前面的testService并没有成功注册。

// 在此输入java代码
2006-06-06 18:41:13 ERROR [ContainerRegistry.java:103] com.jdon.container.builder.ContainerRegistry.createClass() -  createClass:java.lang.ClassNotFoundException: com.jdon.news.service.TestServicePOJOImp
2006-06-06 18:41:13  WARN [PicoContainerWrapper.java:111] com.jdon.container.pico.PicoContainerWrapper.register() -  registe error: testService
<p>

提示的错误居然是java.lang.ClassNotFoundException,是不是我的什么地方配置还是有问题?

jacal
2006-06-08 07:49
还是同样的问题,我在别的机器上调试,报了下面这错误信息

2006-06-08 07:40:26 DEBUG [PoolInterceptor.java:144] com.jdon.aop.interceptor.PoolInterceptor.getCommonsPoolFactory() - [JdonFramework] first time call commonsPoolFactory, create it:com.jdon.news.service.TestServicePOJOImp CommonsPoolFactory
2006-06-08 07:40:26 DEBUG [POJOObjectFactory.java:43] com.jdon.bussinessproxy.target.POJOObjectFactory.create() - [JdonFramework] create new pojo Object for testService
2006-06-08 07:40:26 DEBUG [PicoContainerWrapper.java:177] com.jdon.container.pico.PicoContainerWrapper.getComponentNewInstance() - [JdonFramework]getComponentNewInstance: name=testService
2006-06-08 07:40:26 ERROR [POJOObjectFactory.java:48] com.jdon.bussinessproxy.target.POJOObjectFactory.create() - [JdonFramework]create error: org.picocontainer.defaults.UnsatisfiableDependenciesException: com.jdon.news.service.TestServicePOJOImp has unsatisfiable dependencies: [[class com.jdon.news.dao.JdbcDAO, interface com.jdon.container.visitor.data.SessionContextSetup]]
2006-06-08 07:40:26 ERROR [DefaultTargetServiceFactory.java:62] com.jdon.bussinessproxy.target.DefaultTargetServiceFactory.create() - [JdonFramework]create error: java.lang.Exception: org.picocontainer.defaults.UnsatisfiableDependenciesException: com.jdon.news.service.TestServicePOJOImp has unsatisfiable dependencies: [[class com.jdon.news.dao.JdbcDAO, interface com.jdon.container.visitor.data.SessionContextSetup]]
2006-06-08 07:40:26 ERROR [PoolInterceptor.java:115] root.invoke() - com.jdon.aop.interceptor.PoolInterceptor
java.lang.NullPointerException
	at com.jdon.aop.interceptor.PoolInterceptor.invoke(PoolInterceptor.java:106)

banq
2006-06-08 09:16
PermissionTest是进行Service组件方法的拦截授权,目前这个技术在JiveJdon3中已经成熟应用。

PermissionTest例子是POJO架构(),对于EJB,可以直接使用EJB本身的ACL配置就可以了,没有在EJB架构下试验。

对于ClassNotFoundException:问题估计是打包问题,确保WEB-INF/classes下有这个类,如果EJB包中也使用这个类,可能出现冲突,解决起来属于容器的classloader问题范畴。

jacal
2006-06-08 14:02
感谢banq的回复

还得请教,EJB本身的ACL怎么去配置呢?有没有相关的资料?万分感谢

banq
2006-06-09 11:20
》EJB本身的ACL怎么去配置

这个可通过JBuilder这些可视化界面配置,其原理和Web资源配置类似。

jacal
2006-06-09 11:37
感谢banq的回复

现在单位想要一套发布新闻的系统,原来有的是asp+sqlserver,感觉很不爽,性能很差。趁此机会利用jdonNews来构架,并且想对其进行扩充功能,开发一套完善的内容发布系统,但对于权限来说感觉无从下手。

窝的想发简单描述一下,望banq给点意见。

大概想这样设计:现在单位发布新闻由专门的部门来具体操作,但每个部门的新闻由各个部门提供,现在想改变一下,各部门都有相应的提交新闻的角色,内容发布上去由办公室统一采编、审核最后发布在主页上。并且每个部门用户之间可以相互发送文件,可以是一对一,也可一是一对多。如果用常见的权限控制方法,需要判断的地方就比较多,而且难以控制和维护,所以想考虑一种全新的权限管理方法,但原来没有做过这方面的,所以难以实现哈。

banq
2006-06-09 11:49
首先需要设计出角色来,至少有下面几种角色:提交者;审核发布者。

用户之间可以相互发送文件,实际可以理解为一个个人消息列表。

>需要判断的地方就比较多,而且难以控制和维护

权限ACL设置肯定是要和业务系统分离,通过配置联系在一起,这方面可参考PerimissionTest或JiveJdon3例子。

关键还是你的角色提炼,非常重要,很多人就难在这个角色提炼上。

角色提炼可采取四色图方式,对每个功能实现明确四色图四个角色:MI、Role和description,然后,再将多个四色图的Role进行一个总结。

MI实际就是Service实现(JdonNews中的Sessionbean),而操作MI的角色Role可以在配置中实现,POJO架构下可参考PerimissionTest或JiveJdon3中PermissionInterceptor和permission.xml配置;EJB架构下,可参考EJB的方法权限配置,在JF应用包中有一个remote案例,虽然是支持远程application案例,但是服务器端配置完整的EJB安全架构

猜你喜欢