我对java EE有第100个问题。我不明白到底是怎么回事
这是我的EJB
for i in $(seq 1 2); do
echo "Number $i"
done | while read -r line; do
./argtest.sh "$line"
done
这是我的ejb-jar.xml
@Stateless
@LocalBean
@Remote(ItemRemote.class)
public class ItemEJB implements ItemLocal, ItemRemote {
@PersistenceContext(unitName = "demo_unit")
private EntityManager em;
@Resource(name = "currencyEntry")
private String currency;
@Resource(name = "changeRateEntry")
private Float changeRate;
@Override
public List<Book> findBooks() {
TypedQuery<Book> query = em.createNamedQuery("findAllBooks", Book.class);
return query.getResultList();
}
@Override
public List<CD> findCDs() {
TypedQuery<CD> query = em.createNamedQuery("findAllCDs", CD.class);
return query.getResultList();
}
public Book createBook(Book book) {
em.persist(book);
return book;
}
public CD createCD(CD cd) {
em.persist(cd);
return cd;
}
public void deleteCD(CD cd) {
em.remove(em.merge(cd));
}
public Item convertPrice(Item item){
item.setPrice(item.getPrice()*changeRate);
item.setCurrency(currency);
return item;
}
}
方法转换价格总是抛出NPE,因为来自xml的值都是Null。 ejb-jar.xml位于src / main / resources。好吗?我花了几个小时仍然不明白发生了什么。
这是基于Aruquillian的单元测试
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
version="3.1">
<enterprise-beans>
<session>
<ejb-name>ItemEJB</ejb-name>
<local-bean/>
<ejb-class>org.abondar.experimental.javaeedemo.ejbdemo.ejb.ItemEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<env-entry>
<env-entry-name>currencyEntry</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Dollars</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>changeRateEntry</env-entry-name>
<env-entry-type>java.lang.Float</env-entry-type>
<env-entry-value>0.90</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>
最有可能的单元测试配置错误。 IDEA显示,当我打开课程时,如果点击它,bean会看到该值。