Hi,

I'm developing an application using BitcoinJ using Java JEE 7, Glassfish 4 
server, Netbeans IDE.

When debugging the application's code at method "addListener" from 
WalletAppKit the an exception shows up.

Could someone help me solve this problem?

Here is the code:

package apkt.opreturn;

import apkt.dao.jpa.GenericDaoJpa;
import apkt.model.OpReturn;
import apkt.service.OpReturnService;
import com.google.common.util.concurrent.Service;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Asynchronous;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;
//import javax.enterprise.concurrent.ManagedThreadFactory;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.InsufficientMoneyException;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.kits.WalletAppKit;
import org.bitcoinj.params.TestNet3Params;
import org.bitcoinj.script.ScriptBuilder;
import org.bitcoinj.wallet.DeterministicSeed;
import org.bitcoinj.wallet.SendRequest;
import org.bitcoinj.wallet.Wallet;
import org.bitcoinj.wallet.listeners.WalletChangeEventListener;

@Singleton
@Startup
public class Demo {

    @EJB 
    private Demo self;
    
    public static NetworkParameters params = TestNet3Params.get();
    public static final String APP_NAME = "WalletTemplate";
    private static final String WALLET_FILE_NAME = 
APP_NAME.replaceAll("[^a-zA-Z0-9.-]", "_") + "-"
            + params.getPaymentProtocolId();
    private WalletAppKit bitcoin;


    @PostConstruct
    public void startup() {
        self.startThread();
    }

    @Asynchronous
    public void startThread() {
        try {
            start();
        } catch (IOException ex) {
            Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, 
ex);
        }
    }

    public void start() throws IOException {

        setupWalletKit(null);
        
        // when debugging gets to this line of code, the exception shows up
        bitcoin.addListener(new Service.Listener() {
            @Override
            public void running() {
                try {
                    super.running();
                    byte[] b = "17-01-2017 Mane, dobrodosao! vole te tata i 
mama. Gospodi pomiluj nas.".getBytes("UTF-8");
                    // Create a tx with an OP_RETURN output
                    Transaction tx = new Transaction(params);
                    tx.addOutput(Coin.ZERO, 
ScriptBuilder.createOpReturnScript(b));
                    
                    System.out.println("before: " + 
bitcoin.wallet().getBalance().toString());
                    
                    // Send it to the Bitcoin network
                    bitcoin.wallet().sendCoins(SendRequest.forTx(tx));
                } catch (UnsupportedEncodingException ex) {
                    
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InsufficientMoneyException ex) {
                    
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }, Runnable::run);
        bitcoin.addListener(new Service.Listener() {}, 
OpReturnRunnable::runLater);
        bitcoin.startAsync();
    }

    public void setupWalletKit(DeterministicSeed seed) {
        bitcoin = new WalletAppKit(params, new File("."), WALLET_FILE_NAME) 
{
            @Override
            protected void onSetupCompleted() {
                // Don't make the user wait for confirmations for now, as 
the intention is they're sending it
                // their own money!
                bitcoin.wallet().allowSpendingUnconfirmedTransactions();
                
            }
        };
    }
}

Warning:   Context path from ServletContext:  differs from path from 
bundle: /
Warning:   A system exception occurred during an invocation on EJB Demo, 
method: public void apkt.opreturn.Demo.startThread()
Warning:   javax.ejb.EJBException
at 
com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:752)
at 
com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:702)
at 
com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507)
at 
com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074)
at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:114)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IncompatibleClassChangeError: class 
apkt.opreturn.Demo$1 has interface 
com.google.common.util.concurrent.Service$Listener as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at 
org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:1220)
at 
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1750)
at 
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633)
at apkt.opreturn.Demo.write(Demo.java:80)
at apkt.opreturn.Demo.startThread(Demo.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
at 
org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
at 
com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)
at 
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
at 
org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
at 
org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at 
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
at 
com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
at 
com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at 
com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at 
com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at 
com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)
at com.sun.ejb.containers.EjbAsyncTask.call(EjbAsyncTask.java:101) 

-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to