我遇到了 exxh EJB 的问题。
首先,我的设置:我使用的是 GlassFish 和 JEE6。我有一个打包为 WAR 的 REST-Service 和一个打包为 EJB-Jar 的 bean。它们不在 EAR 内。应该通过@EJB 从 REST-WAR 使用 EJB,但是当我尝试部署 WAR 时,GlassFish 显示此错误:
部署过程中发生错误:
Exception while deploying the app [exx-upload-1.0] : Cannot resolve reference Local ejb-ref name=com.ex.exx.model.FileUpload/ocr,Local 3.x interface =com.ex.exx.api.IOCRService,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session. Please see server.log for more details.
(之前部署的 EJB 没有任何错误)。
我不知道为什么。这是 EJB 代码:
界面:
@Local
public interface IOCRService {
public String performOCRonImage(BufferedImage input);
}
和实施:
@Stateless
@LocalBean
public class OCRScanner implements IOCRService {
private Logger logger = Logger.getLogger(this.getClass().getName());
private final static String NOT_RECOGNIZED = "Can not regocnize text";
/**
* Default constructor.
*/
public OCRScanner() {
logger.log(Level.INFO, "### OCR SCANNER BUILD" + this);
}
public String performOCRonImage(BufferedImage input) {
logger.log(Level.INFO, "### OCR SCANNER CALLED" + this);
}
...
这是 WAR 中的重要部分:
public class FileUpload {
private final File PROPERTIES_FILE = new File(
"fileUploadProperties.properties");
private final String PARAMETER_NAME = "file";
private final Logger logger = Logger.getLogger(this.getClass().getName());
@EJB
private IOCRService ocr;
public Response uploadFile(...) {
// do some stuff
logger.log(Level.INFO, "### EJB" + ocr.toString())
}
有什么建议吗?我在这里找不到我的失败。