[英]Dozer with EJB 3.1 in TomEE
我在TomEE中使用EJB 3.1,我想使用一個映射器,所以我選擇了DOZER。 這是實現:
@Startup
@Singleton
public class DozerInstantiator {
private Logger log = Logger.getLogger(DozerInstantiator.class);
public enum States {BEFORESTARTED, STARTED, PAUSED, SHUTTINGDOWN};
private States state;
private DozerBeanMapper mapper;
@PostConstruct
public void initialize() throws Throwable {
log.info("---------------Dozer Starting Up-----------------");
try{
state = States.BEFORESTARTED;
this.mapper = new DozerBeanMapper();
} catch (Throwable e) {
log.error("Cause: " + e.getCause());
log.error("Message: " + e.getMessage());
log.error("Class: " + e.getClass());
log.error("StackTrace: " + e.getStackTrace());
throw e;
}
log.info("---------------Dozer Started-----------------"); }
public DozerBeanMapper getMapper() {
return mapper; }
}
這是我要注入Dozer的EJB:
@Stateless(name = "randomName")
@WebService(targetNamespace = "urn:x1:x2")
@Local
@TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRES_NEW)
public class RandomEJBImpl implements RandomEJB {
@EJB
DozerInstantiator di;
public ListOutput getAllConf() throws ServiceException {
try {
// code
objMapped = di.getMapper().map(obj, X.class);
// more code
}
return listOutput
} catch (Exception e) {
logger.error("Failed in RandomEJBImpl.getAllConf: "+e);
return null;
}
}
}
我有兩個問題:
1-如果我嘗試使用先前的DozerInstantiator配置啟動服務器,則應用程序崩潰,如您在此處看到的,直到我意識到如果刪除@PostConstruct它將啟動; 你能告訴我為什么嗎?
INFO 09-08 14:57:17,032 [main]: (DozerInstantiator.java:initialize:35) ----------------Dozer Starting Up-----------------
ERROR 09-08 14:57:17,093 [main]: (DozerInstantiator.java:initialize:41) -Cause: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
ERROR 09-08 14:57:17,094 [main]: (DozerInstantiator.java:initialize:42) -Message: org/apache/commons/lang3/StringUtils
ERROR 09-08 14:57:17,095 [main]: (DozerInstantiator.java:initialize:43) -Class: class java.lang.NoClassDefFoundError
ERROR 09-08 14:57:17,095 [main]: (DozerInstantiator.java:initialize:44) -StackTrace: [Ljava.lang.StackTraceElement;@7856e1fc
2-因此,從DozerInstantiator刪除@PostConstruct之后,我在日志文件中出現以下錯誤...如何避免呢?
ERROR 09-08 14:34:12,948 [http-8080-2]: (RandomEJBImpl.getAllConf:830) -Failed in Failed in RandomEJBImpl.getAllConf: java.lang.NullPointerException
也許嘗試在conf / system.properties中設置以下行:openejb.classloader.forced-load = org.apache.commons.lang3以允許從Web應用程序加載lang3,並且不讓我跳過Web應用程序以使用容器lang3版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.