Problem when starting Hot Rod Server instance
weimeilin Dec 19, 2013 2:05 AMHi,
Using the quick start as example, I did a Cache Remote Hot Rod Server, it runs smoothly in my JBDS environment.
But it throws this exception when I tried packaging it up into a jar file, and running it alone...
2013-12-19 15:00:25,551 INFO [LifecycleManager] (main) ISPN014003: Registering Query interceptor
2013-12-19 15:00:25,557 INFO [CacheJmxRegistration] (main) ISPN000031: MBeans were successfully registered to the platform MBean server.
2013-12-19 15:00:25,564 INFO [LifecycleManager] (main) ISPN014003: Registering Query interceptor
2013-12-19 15:00:25,571 INFO [CacheJmxRegistration] (main) ISPN000031: MBeans were successfully registered to the platform MBean server.
java.lang.NullPointerException
at org.infinispan.server.core.AbstractProtocolServer.registerTransportMBean(AbstractProtocolServer.scala:78)
at org.infinispan.server.core.AbstractProtocolServer.startTransport(AbstractProtocolServer.scala:58)
at org.infinispan.server.hotrod.HotRodServer.startTransport(HotRodServer.scala:77)
at org.infinispan.server.core.AbstractProtocolServer.startInternal(AbstractProtocolServer.scala:39)
at org.infinispan.server.hotrod.HotRodServer.startInternal(HotRodServer.scala:56)
at org.infinispan.server.hotrod.HotRodServer.startInternal(HotRodServer.scala:29)
at org.infinispan.server.core.AbstractProtocolServer.start(AbstractProtocolServer.scala:44)
at com.redhat.jdgdemo.util.TestHelper.startHotRodServer(TestHelper.java:32)
at com.redhat.jdgdemo.CacheServer.startHotRodServers(CacheServer.java:116)
at com.redhat.jdgdemo.CacheServer.main(CacheServer.java:100)
Here is some of my configurations in my code,
GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder().clusteredDefault(); gcb.globalJmxStatistics().enable().cacheManagerName("ChtPocCacheManager") .allowDuplicateDomains(true) .jmxDomain(JMX_DOMAIN) .mBeanServerLookup(new PerThreadMBeanServerLookup()) .transport().addProperty("configurationFile", "jgroups-cht.xml"); System.out.println("jmxDomain:["+JMX_DOMAIN+"]"); ConfigurationBuilder builder = new ConfigurationBuilder(); builder.dataContainer() .keyEquivalence(ByteArrayEquivalence.INSTANCE) .clustering().cacheMode(CacheMode.DIST_SYNC).hash().numOwners(2) .indexing().enable() .addProperty("default.directory_provider", getLuceneDirectoryProvider()) .addProperty("lucene_version", "LUCENE_CURRENT") .jmxStatistics().enable(); //cacheManager = createCacheManagerProgramatically(); cacheManager = new DefaultCacheManager(gcb.build()); for(String cache_name: CACHE_NAMES){ cacheManager.defineConfiguration(cache_name, builder.build()); } ProtocolServerConfiguration serverConfig = new HotRodServerConfigurationBuilder().host("127.0.0.1").port(15233).build(); HotRodServer server = new HotRodServer(); server.start(serverConfig, cacheManager);
here is the pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cht.jdgdemo</groupId> <artifactId>POC-Server</artifactId> <version>6.2.0-SNAPSHOT</version> <name>JBoss JDG Quickstart: hotrod-endpoint</name> <licenses> <license> <name>Apache License, Version 2.0</name> <distribution>repo</distribution> <url>http://www.apache.org/licenses/LICENSE-2.0.html</url> </license> </licenses> <properties> <!-- Explicitly declaring the source encoding eliminates the following message: --> <!-- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Defines the main class to be execute when running java -jar command --> <main.class.hotrod-endpoint>com.redhat.jdgdemo.FootballManager</main.class.hotrod-endpoint> <version.org.infinispan>6.0.0.CR1</version.org.infinispan> <!-- other plugin versions --> <shade.plugin.version>1.5</shade.plugin.version> <exec.plugin.version>1.2.1</exec.plugin.version> <ant.plugin.version>1.7</ant.plugin.version> <!-- maven-compiler-plugin --> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.source>1.7</maven.compiler.source> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-bom</artifactId> <version>${version.org.infinispan}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Import the infinispan core --> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-core</artifactId> </dependency> <!-- Import the Infinispan client hotrod --> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-client-hotrod</artifactId> <version>6.0.0.Final</version> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-query</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-search-infinispan</artifactId> </dependency> <dependency> <groupId>org.infinispan.protostream</groupId> <artifactId>protostream</artifactId> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-remote-query-client</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-remote-query-server</artifactId> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-server-hotrod</artifactId> <version>6.0.0.CR1</version> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-server-hotrod</artifactId> <version>6.0.0.CR1</version> <type>test-jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> </dependency> </dependencies> <build> <!-- Maven will append the version to the finalName (which is the name given to the generated jar) --> <finalName>${project.artifactId}</finalName> <plugins> <!-- This plugin permits the execution of this quickstart through mvn exec:java command --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>${exec.plugin.version}</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.redhat.jdgdemo.CacheServer</mainClass> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.redhat.jdgdemo.CacheServer</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-my-jar-with-dependencies</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>custom-classpath</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>${ant.plugin.version}</version> <executions> <execution> <id>prepare-directories</id> <phase>generate-sources</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo message="Build create lib/ directory"/> <delete dir="${project.build.directory}/lib"/> <mkdir dir="${project.build.directory}/lib"/> </tasks> </configuration> </execution> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo message="Copying libraries from server distribution to lib/ directory"/> <copy todir="${project.build.directory}/lib"> <fileset dir="${classpath}"> <include name="*.jar"/> </fileset> </copy> <pathconvert pathsep=" " property="jar.classpath"> <fileset dir="${project.build.directory}/lib"/> <chainedmapper> <flattenmapper/> <filtermapper> <replacestring from=" " to="%20"/> </filtermapper> <globmapper from="*" to="lib/*"/> </chainedmapper> </pathconvert> <echo message="CLASSPATH= ${jar.classpath}"/> </tasks> <exportAntProperties>true</exportAntProperties> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addDefaultImplementationEntries>false</addDefaultImplementationEntries> <addClasspath>true</addClasspath> <mainClass>com.redhat.jdgdemo.CacheServer</mainClass> </manifest> <manifestEntries> <Class-Path>${jar.classpath}</Class-Path> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build> </profile>