[infinispan-issues] [JBoss JIRA] (ISPN-7711) Improve server-side protostream marshaller registration
Tristan Tarrant (JIRA)
issues at jboss.org
Fri Jul 14 13:04:08 EDT 2017
[ https://issues.jboss.org/browse/ISPN-7711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tristan Tarrant updated ISPN-7711:
----------------------------------
Fix Version/s: 9.2.0.Final
(was: 9.1.0.Final)
> Improve server-side protostream marshaller registration
> -------------------------------------------------------
>
> Key: ISPN-7711
> URL: https://issues.jboss.org/browse/ISPN-7711
> Project: Infinispan
> Issue Type: Enhancement
> Reporter: Galder Zamarreño
> Assignee: Adrian Nistor
> Fix For: 9.2.0.Final
>
>
> A more user friendly way to register protostream marshallers remotely is needed when the protostream marshaller is used for compatibility mode (or transcoding) in the future. It's currently possible to do it with a remote server task but that's a bit hacky.
> This server task shows how it can be done:
> {code}
> package delays.java.stream;
> import org.infinispan.manager.EmbeddedCacheManager;
> import org.infinispan.query.remote.ProtobufMetadataManager;
> import org.infinispan.tasks.ServerTask;
> import org.infinispan.tasks.TaskContext;
> import org.infinispan.tasks.TaskExecutionMode;
> import delays.java.stream.pojos.Station;
> import delays.java.stream.pojos.Stop;
> import delays.java.stream.pojos.Train;
> public class AddProtobufTask implements ServerTask {
> private TaskContext ctx;
> @Override
> public void setTaskContext(TaskContext ctx) {
> this.ctx = ctx;
> }
> @Override
> public String getName() {
> return "add-protobuf";
> }
> @Override
> public Object call() throws Exception {
> EmbeddedCacheManager cm = ctx.getCache().get().getCacheManager();
> ProtobufMetadataManager protobufMetadataManager = cm.getGlobalComponentRegistry().getComponent(ProtobufMetadataManager.class);
> protobufMetadataManager.registerMarshaller(new Stop.Marshaller());
> protobufMetadataManager.registerMarshaller(new Station.Marshaller());
> protobufMetadataManager.registerMarshaller(new Train.Marshaller());
> return null;
> }
> @Override
> public TaskExecutionMode getExecutionMode() {
> // Registering marshallers should be done in all nodes
> return TaskExecutionMode.ALL_NODES;
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the infinispan-issues
mailing list