今天写了个factory class,用来把interface和实现的class进行组合……以便在业务逻辑中调用……类似这样:
<managers>
<manager id="dbconnectionmanager">
<service>tutorial.db.idbconnectionmanager< span>service>
<service-impl>tutorial.db.impl.dbconnectionmanagerimpl< span>service-impl>
< span>manager>
<manager id="employeeservice">
<service>tutorial.service.iface.iemployeeservice< span>service>
<service-impl>tutorial.service.impl.employeeserviceimpl< span>service-impl>
< span>manager>
< span>mamagers>
在业务逻辑中,类似下面的调用:
bizfactory bizfactory = new bizfactory();
employee employee = new employee();
employee.setempnumber("9527");
//...省略...
iemployeeservice empservice
= (iemployeeservice) bizfactory.create("employeeservice");
empservice.update(employee);
但是在jbuilder运行的时候,却报告employeeserviceimpl.class找不到……郁闷……一看才发现,jbuilder 2005在make的时候,在${project_home}/classes中生成了employeeserviceimpl.class文件,却并没有把这个文件部署到${project_home}/${webmodule_home}/web-inf/classes下面!
分析了半天,难道是iemployeeservice有被显示调用,而employeeserviceimpl没有代码显示调用,是通过factory class读取config xml来创建的,难道……这就是关键???
翻了半天jbuilder 2005的配置选项,终于让我发现了……见下图,去掉那个默认的选项即可!
闽公网安备 35060202000074号