0

プロジェクトで mvn install を使用した後、奇妙な問題が発生しました。

何よりもまず mvn clean を実行し、Eclipse 内でプロジェクトを開始しても問題ありません。

mvn install (アセンブリで jar を生成するにはこのコマンドが必要) を実行してプロジェクトを再起動した後、トランザクションが開かれていないため、休止状態でデータを保存するときに奇妙な例外が発生します。

これの1つ:

 java.lang.RuntimeException: java.lang.IllegalArgumentException: id to load is required for loading
    at com.econorma.ft2500.util.concurrent.UserTransactionRunnable.run(UserTransactionRunnable.java:20)
    at com.econorma.ft2500.util.concurrent.ContextAwareExectuor$CDIRunnable.run(ContextAwareExectuor.java:67)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.IllegalArgumentException: id to load is required for loading
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:109)
    at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:79)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2548)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1110)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:1068)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
    at org.jboss.weld.proxies.EntityManager$827868750$Proxy$_$$_WeldClientProxy.find(Unknown Source)
    at com.econorma.ft2500.MeasureCache$UpdateLatestMeasure.runInTransaction(MeasureCache.java:136)
    at com.econorma.ft2500.util.concurrent.UserTransactionRunnable.run(UserTransactionRunnable.java:16)
    ... 8 more

これは、src/main/resources/META-INF に正しく配置された beans.xml です。

 <?xml version="1.0" encoding="UTF-8"?>
  <beans 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/beans_1_0.xsd">
<interceptors>
    <class>com.econorma.ft2500.cdi.SynchronizedInterceptor</class>
    <class>org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor</class>
</interceptors>

トランザクション クラス:

public abstract class UserTransactionRunnable implements Runnable{

    protected @Inject EntityManager em; 

    @Override
    public void run() {
        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        try{
            runInTransaction();
            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
            throw new RuntimeException(e);
        }finally{

        }

    }

    protected abstract void runInTransaction();
}

私の考慮事項は、TARGET フォルダーを生成する mvn install コマンドが beans.xml への接続を失ったことです。

4

0 に答える 0