CollegeService是远程接口。由于大多数远程接口有类似的增删改查的操作,因此定义一个父接口IService。为了减少不必要的类型转换,在定义IService时使用泛型。当CollegeService从ISerive派生时,绑定定义College。
CollegeServiceBean是一个无状态会话Bean,用@Stateless标识。它实现了CollegeService接口,并从AbstractServieBean派生。AbstractBean提供了增删改查操作的缺省实现。
图中IService_College和AbstractServiceBean_College表示对泛型的绑定,它们没有代码,在子类型派生时体现。
package org.bnuitse.tms.service.security;
import java.util.List;
import org.bnuitse.tms.model.security.College;
import org.bnuitse.tms.service.IService;
public interface CollegeService extends IService<College>{
String jndiName = "tms/security/CollegeService";
College find(String name);
}
package org.bnuitse.tms.service.security.impl;
import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import org.bnuitse.tms.model.security.College;
import org.bnuitse.tms.service.AbstractServiceBean;
import org.bnuitse.tms.service.security.CollegeService;
import org.jboss.annotation.ejb.RemoteBinding;
@Stateless
@Remote(CollegeService.class)
@RemoteBinding(jndiBinding = CollegeService.jndiName)
public class CollegeServiceBean extends AbstractServiceBean<College> implements CollegeService {
public College find(String name) {
return (College) em.createQuery("from College o where o.name = :name").setParameter("name", name).getSingleResult();
}
}