我有以下问题:
环境:- Weblogic 12.1.3 MySQL
- Gradle
- Log4j
与Sharedlib:
-rwxrwxrwx 1 josediaz staff 0B Jan 19 17:06 Readme.txt
drwxrwxrwx 2 josediaz staff 68B Mar 31 20:48 build
-rwxr-xr-x 1 josediaz staff 1.1K Jun 30 01:05 build.gradle
drwxrwxrwx 9 josediaz staff 306B Jul 1 01:31 dao-ifz.jar
drwxrwxrwx 10 josediaz staff 340B Jul 1 01:31 dao-imp.jar
drwxrwxrwx 5 josediaz staff 170B Mar 31 20:48 dependencias
drwxrwxrwx 9 josediaz staff 306B Jul 1 01:31 model.jar
drwxrwxrwx 9 josediaz staff 306B Jul 1 01:31 service-ifz.jar
drwxrwxrwx 9 josediaz staff 306B Jul 1 01:31 service-imp.jar
-rwxr-xr-x 1 josediaz staff 578B Apr 27 23:02 settings.gradle
drwxrwxrwx 11 josediaz staff 374B Jul 1 01:31 slb.ear
drwxr-xr-x 11 josediaz staff 374B Jul 1 01:31 test.jar
我在我的sharedlib的dao-imp中有一个JPAPersonDAO
,我使用log4j进行日志记录:
@Stateless
public class JPAPersonDAO implements PersonDAO {
private static final Logger LOG = Logger.getLogger(JPAPersonDAO.class);
@PersistenceContext(unitName = "persistence-unit")
private EntityManager entityManager;
@SuppressWarnings("unchecked")
@Override
public List<Person> findPersons(int startPosition, int maxResults, String sortFields, String sortDirections) {
LOG.warn("warn");
LOG.info("info");
LOG.trace("trace");
LOG.debug("debug");
LOG.error("error");
LOG.fatal("fatal");
return entityManager
.createNativeQuery("select * from person order by name limit " + startPosition + "," + maxResults,
Person.class)
.getResultList();
}
我的log4j.properties:
log4j.rootLogger=INFO, stdout, file
log4j.debug=true
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %-5p %c %x - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File=/Users/josediaz/Projects/logs/logging_sharedlib.log
log4j.appender.file.Append = false
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.MaxFileSize = 20000Kb
log4j.appender.file.MaxBackupIndex = 5
log4j.appender.file.layout.ConversionPattern=[%d] %-5p %c %x - %m%n
log4j.category.com.theserverlabs.blog.wls=DEBUG
当我部署我的sharedlib和其他EAR使用它时,日志生成没有问题。
问题
我添加了一个基于arquillian的集成测试的测试项目。
@RunWith(Arquillian.class)
public class NativeSqlTest {
@Inject
PersonDAO dao;
@Deployment
public static WebArchive createDeployment() {
return ShrinkWrap.create(WebArchive.class)
.addClasses(PersonDAO.class, JPAPersonDAO.class, Person.class, Profiled.class,
ProfilingInterceptor.class)
.addAsWebInfResource("test-beans.xml", "beans.xml")
.addAsResource("test-persistence.xml", "META-INF/persistence.xml");
}
/**
* In the test, we're just going to invoke the only available operation in
* the +EmployeeBean+ and assert a few details to confirm that the native
* query was successfully executed.
*/
@Test
public void testNativeSql() {
int result = dao.countPersons();
assertTrue(result > 0);
}
}
无论我是从IDE执行这个测试还是从终端调用gradle clean build
,我都会得到以下错误:
org.jboss.arquillian.container.spi.client.container。DeploymentException: Deployment Failed on server: java.lang.ClassNotFoundException: org.apache.log4j.Logger
我做错了什么?
谢谢黄敏聪,你的建议很重要。我把它添加到我的部署. addpackages (true, "org.apache.log4j")中,测试通过了。
@Deployment
public static WebArchive createDeployment() {
return ShrinkWrap.create(WebArchive.class, "testSharedlib.war")
.addClasses(PersonDAO.class, JPAPersonDAO.class, Person.class, Profiled.class,
ProfilingInterceptor.class)
.addPackages(true, "org.apache.log4j")
.addAsResource("test-persistence.xml", "META-INF/persistence.xml")
.addAsResource("log4j.xml")
.addAsWebInfResource("test-beans.xml", "beans.xml");
}
谢谢。