public BookManager() {
    	try {
	    	ConfigurationBuilder builder = new ConfigurationBuilder();
	    	
	        builder.withProperties(jdgProperty());
	        
	        builder.marshaller(new ProtoStreamMarshaller());
	        cacheManager = new RemoteCacheManager(builder.build());
	        ObjectName objName = new ObjectName("jboss.infinispan:type=RemoteQuery,name=\"chtpoc\",component=ProtobufMetadataManager");
	
	        //initialize server-side serialization context via JMX
	        byte[] descriptor = readClasspathResource("/library.protobin");
	        MBeanServer mBeanServer = MBeanServerFactory.createMBeanServer();;
	        mBeanServer.invoke(objName, "registerProtofile", new Object[]{descriptor}, new String[]{byte[].class.getName()});
	        
	        SerializationContext serCtx = ProtoStreamMarshaller.getSerializationContext(cacheManager);
    	
		
			serCtx.registerProtofile("/library.protobin");
		
			serCtx.registerMarshaller(Book.class, new BookMarshaller());
			serCtx.registerMarshaller(Author.class, new AuthorMarshaller());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (DescriptorValidationException e) {
			e.printStackTrace();
		} catch (InstanceNotFoundException e) {
			e.printStackTrace();
		} catch (ReflectionException e) {
			e.printStackTrace();
		} catch (MBeanException e) {
			e.printStackTrace();
		} catch (MalformedObjectNameException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
        
        
    }