当我启动 jboss 时,它返回:
Calling "D:\Servers\jboss-as-7.1.1.Final\bin\standalone.conf.bat"
"JAVA_OPTS already set in environment; overriding default settings with values: -Xms128m -Xmx512m -XX:MaxPermSize=256m"
===============================================================================
JBoss Bootstrap Environment
JBOSS_HOME: D:\Servers\jboss-as-7.1.1.Final
JAVA: D:\Program Files\Java\jdk1.7.0_79\bin\java
JAVA_OPTS: -XX:+TieredCompilation -Dprogram.name=standalone.bat -Xms128m -Xmx512m -XX:MaxPermSize=256m
===============================================================================
12:35:34,229 INFORMAZIONI [org.jboss.modules] JBoss Modules version 1.1.1.GA
12:35:35,009 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA
12:35:35,047 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting
12:35:36,728 INFO [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
12:35:36,729 INFO [org.xnio] XNIO Version 3.0.3.GA
12:35:36,738 INFO [org.xnio.nio] XNIO NIO Implementation …
Run Code Online (Sandbox Code Playgroud) 我正在学习一些教程后的Java持久性.
我正在使用Java EE 7和Payara服务器.
我注意到每个使用不同的持久性方法.
例子:
简单
@Stateless
public class BookServiceBean implements BookService {
@PersistenceContext
private EntityManager em;
public void createOrUpdate(Book book) {
em.persist(book);
}
public void remove(Book book) {
em.remove(book);
}
}
Run Code Online (Sandbox Code Playgroud)with flush()
,这是在persistene.xml中的 "AUTO"上没有设置验证策略时使用的,对吧?
@Stateless
public class BookServiceBean implements BookService {
@PersistenceContext
private EntityManager em;
public void createOrUpdate(Book book) {
em.persist(book);
em.flush();
}
public void remove(Book book) {
em.remove(book);
em.flush();
}
}
Run Code Online (Sandbox Code Playgroud)与交易
@Stateless
public class BookServiceBean implements BookService {
@PersistenceContext
private EntityManager em;
public void …
Run Code Online (Sandbox Code Playgroud)我正在按照本教程,但我有一些问题来设置jdbc连接.
在我的arquillian.xml中,我写道:
...
<container qualifier="payara-remote" default="true">
<configuration>
<property name="resourcesXml">
src/test/resources-payara-remote/glassfish-resources.xml
</property>
</configuration>
</container>
...
Run Code Online (Sandbox Code Playgroud)
当我运行我的测试时,我收到此警告:
AVVERTENZA: Configuration contain properties not supported by the backing object org.jboss.arquillian.container.glassfish.remote_3_1.GlassFishRestConfiguration
Unused property entries: {resourcesXml=
src/test/resources-payara-remote/glassfish-resources.xml
}
Supported property names: [adminHttps, remoteServerHttpPort, libraries, type, remoteServerAddress, target, remoteServerAdminPort, remoteServerAdminHttps, adminUser, authorisation, adminPort, properties, adminHost, adminPassword]
Run Code Online (Sandbox Code Playgroud)
所以我认为"resourceXml"不受支持......我如何告诉arquillian使用该文件?
而且,在该文件中我声明了一个jdbc/test.我必须在persistence.xml中编写什么才能使用该数据库连接?
先感谢您
UPDATE
我希望在"src/test/resources-payara-remote/glassfish-resources.xml"中使用我的test-db声明jdbc连接(不在远程服务器中创建jdbc连接),但我不知道如何设置arquillian以使用.xml文件中声明的jdbc连接.
我不知道为什么我无法捕获 EJB 中的方法抛出的 NoResultException ......
try {
User user = userFacade.findByEmail(email);
userController.setSelected(user);
getSelected().setUserOid(user.getOid());
} catch (NoResultException noResultException) {
JsfUtil.addErrorMessage("No user found with provided email");
System.err.println(noResultException.getMessage());
} catch (EJBException e){
System.err.println(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
EJB
@Stateless
public class UserFacade extends AbstractFacade<User> {
...
public User findByEmail (String email) throws NoResultException{
User user = em.createNamedQuery("User.findByEmail", User.class).
setParameter("email", email).getSingleResult();
return user;
}
...
Run Code Online (Sandbox Code Playgroud)
为什么这段代码会捕获 EJBException 而不是 NoResultException 以及如何捕获 NoResultException?
Avvertenza: javax.ejb.EJBException
...
...
Caused by: javax.persistence.NoResultException: getSingleResult() did not retrieve any entities.
Run Code Online (Sandbox Code Playgroud)