2014-12-24 3 views
0

Liquibase를 내 응용 프로그램에 통합하려고하며 CDI를 사용하여 배포 할 때 실행하려고합니다. 나는 http://www.liquibase.org/documentation/cdi.html에 지시를 따랐다. 그러나 어떤 운도 가지지 않고 있었다. 여기에 내 코드Liquibase CDI 통합

com.example.dbv.LiquibaeProducer

package com.example.dbv; 

import java.sql.SQLException; 

import javax.annotation.Resource; 
import javax.enterprise.inject.Produces; 
import javax.sql.DataSource; 

import liquibase.integration.cdi.CDILiquibaseConfig; 
import liquibase.integration.cdi.annotations.LiquibaseType; 
import liquibase.resource.ClassLoaderResourceAccessor; 
import liquibase.resource.ResourceAccessor; 

public class LiquibaseProducer { 

@Resource(mappedName="jdbc/mysql-ds") 
protected DataSource ds; 

@Produces 
@LiquibaseType 
public CDILiquibaseConfig createConfig() { 
    CDILiquibaseConfig config = new CDILiquibaseConfig(); 
    config.setChangeLog("com/example/dbv/changeLog.sql"); 

    return config; 
} 

@Produces 
@LiquibaseType 
public DataSource createDataSource() throws SQLException { 
    return ds; 
} 

@Produces 
@LiquibaseType 
public ResourceAccessor create() { 
    return new ClassLoaderResourceAccessor(getClass().getClassLoader()); 
} 

} 

--liquibase formatted sql 

--changeset ci_ms:1 
create table test1 (
    id int primary key, 
    name varchar(255) 
); 
--rollback drop table test1; 

내가 다음과 같은 오류 응용 프로그램을 배포 com.example.dbv.changeLog.sql

입니다 :

[2014-12-24T08:18:58.671-0600] [glassfish 4.1] [SEVERE] [NCLS-CORE-00026] [javax.enterprise.system.core] [tid: _ThreadID=45 _ThreadName=admin-listener(5)] [timeMillis: 1419430738671] [levelValue: 1000] [[ 
Exception during lifecycle processing 
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:javax/enterprise/inject/spi/Extension 
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:234) 
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131) 
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:328) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:496) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:356) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:356) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) 
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: javax/enterprise/inject/spi/Extension 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at com.sun.enterprise.v3.server.APIClassLoaderServiceImpl$APIClassLoader.loadClass(APIClassLoaderServiceImpl.java:257) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:412) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at org.jboss.weld.util.ServiceLoader.loadClass(ServiceLoader.java:225) 
at org.jboss.weld.util.ServiceLoader.loadService(ServiceLoader.java:210) 
at org.jboss.weld.util.ServiceLoader.loadServiceFile(ServiceLoader.java:182) 
at org.jboss.weld.util.ServiceLoader.reload(ServiceLoader.java:153) 
at org.jboss.weld.util.ServiceLoader.iterator(ServiceLoader.java:297) 
at org.glassfish.weld.DeploymentImpl.getExtensions(DeploymentImpl.java:466) 
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:218) 
... 55 more 
Caused by: java.lang.ClassNotFoundException: javax.enterprise.inject.spi.Extension 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 80 more 
]] 
+0

이 메시지는 패키지 문제인 것처럼 보입니다. 귀하의 전쟁/귀로 끝나는 것은 무엇입니까? –

답변

0

이 문제는 글래스 피시에만 적용됩니다. 우리는 wildfly로 전환했으며 코딩 된대로 잘 작동합니다.

2

이것은 실제로 Liquibase 문제입니다. Liquibase CDI 모듈은 CDIBootstrap.afterDeploymentValidation()에서 bean 메소드를 호출 할 때 스펙과 호환되지 않습니다.

)를 CDI 컨테이너이 부팅을 완료 (또는 더 정확하게, 당신이 그것을 할 수 전에 CDI 빈의 메소드를 호출 할 수는 없지만, 그것은 글래스 피시에 (제이보스에 (일) 또는하지 않을 수 있습니다.

Liquibase 업데이트해야