当前位置: 首页 > 知识库问答 >
问题:

如何使用AutoProtoSchemaBuilder为数据网格Red Hat远程缓存实现protostream

岳俊晖
2023-03-14

我有一个从maven管理的java应用程序。我已经实现了数据网格缓存与org.infinispan.client.hotrod.远程缓存管理器版本8.2连接应用程序到分布式远程缓存服务。

跟随链接页面红帽https://access.redhat.com/documentation/en-us/red_hat_data_grid/8.2/html/cache_encoding_and_marshalling/marshalling_user_types实现protostream对象。让我展示一下我是如何实现该应用程序的,因为我无法通过@AutoProtoSchemaBuilder自动生成指南中描述的具体类:

实施的示例:

波姆。xml文件:

<dependency>
  <groupId>org.infinispan</groupId>
  <artifactId>infinispan-bom</artifactId>
  <version>12.1.7.Final-redhat-00001</version>
  <type>pom</type>
</dependency>
<dependency>
  <groupId>org.infinispan</groupId>
  <artifactId>infinispan-client-hotrod</artifactId>
  <version>12.1.7.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.infinispan/infinispan-jcache-remote -->
<dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-jcache-remote</artifactId>
    <version>12.1.7.Final</version>
</dependency>
<dependency>
    <groupId>org.infinispan.protostream</groupId>
    <artifactId>protostream-processor</artifactId>
    <version>4.4.1.Final</version>
    <scope>provided</scope>
</dependency>

LibraryInitalizer.java接口

package com.xxx.wa.configurator.cache.protostream;

import org.infinispan.protostream.GeneratedSchema;
import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;

import com.ducati.wa.configurator.cache.protostream.test.Home;

@AutoProtoSchemaBuilder(includeClasses = { Home.class }, schemaFileName = "simple.proto", schemaFilePath = "proto/", schemaPackageName = "com.ducati.wa.configurator.cache.protostream.test")
public interface LibraryInitalizer extends GeneratedSchema{

}

Home.java作为测试对象

package com.xxx.wa.configurator.cache.protostream.test;

import java.io.Serializable;

import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;


public class Home implements Serializable{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @ProtoField(number = 1)
    String name;
    
    @ProtoField(number = 2)
    String address;
    
    
    public Home() {
        super();
    }
    @ProtoFactory
    public Home(String name, String address) {
        super();
        this.name = name;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    
    
}

面临的问题是缺少librarynitializerimpl类autogenerate,我曾经执行mvn clean compilemaven命令。

目前我正在使用org。阿帕奇。专家插件,您知道自动生成问题吗?

共有1个答案

翁鸿远
2023-03-14

只是为了更新我的帖子。

我发现了这个问题。在Maven中,插件被注释处理器禁用。

我添加了protostream处理器的标记,如下所示:

<annotationProcessorPaths>
    <annotationProcessorPath>
       <groupId>org.infinispan.protostream</groupId>
        <artifactId>protostream-processor</artifactId>
        <version>4.4.1.Final</version>
    </annotationProcessorPath>
</annotationProcessorPaths>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
   <!--  <configuration>
        <compilerArgument>-proc:none</compilerArgument>
    </configuration> -->
    <configuration>
    <annotationProcessorPaths>
        <annotationProcessorPath>
           <groupId>org.infinispan.protostream</groupId>
            <artifactId>protostream-processor</artifactId>
            <version>4.4.1.Final</version>
        </annotationProcessorPath>
    </annotationProcessorPaths>
</configuration>
</plugin>

 类似资料:
  • 问题内容: (这是一个Q /A风格的问题,是提出类似问题的人们的首选资源。很多人似乎迷失了最佳方法,因为他们不知道所有选择许多答案将特定于ASP.NET,但是AJAX和其他技术在其他框架中确实具有等效功能,例如socket.io和SignalR。) 我有一个在ASP.NET中实现的数据表。我想在页面上实时或接近实时显示对此基础数据的更改。我该怎么办? 我的模特: 代替此示例的实际数据库,我将把数据

  • 问题内容: 最少使用(LFU)是一种高速缓存算法,用于管理计算机内的内存。此方法的标准特性涉及系统跟踪内存中块被引用的次数。当缓存已满且需要更多空间时,系统将以最低参考频率清除项目。 例如,用Java来实现最近使用的对象缓存的最佳方法是什么? 我已经使用LinkedHashMap实现了一个(通过保持访问对象的次数),但是我很好奇是否有任何新的并发集合会更好。 考虑这种情况:假设缓存已满,我们需要为

  • 本文向大家介绍spring结合redis如何实现数据的缓存,包括了spring结合redis如何实现数据的缓存的使用技巧和注意事项,需要的朋友参考一下 1、实现目标   通过redis缓存数据。(目的不是加快查询的速度,而是减少数据库的负担)   2、所需jar包     注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错。因为co

  • 本文向大家介绍详解Spring Boot使用redis实现数据缓存,包括了详解Spring Boot使用redis实现数据缓存的使用技巧和注意事项,需要的朋友参考一下 基于spring Boot 1.5.2.RELEASE版本,一方面验证与Redis的集成方法,另外了解使用方法。 集成方法 1、配置依赖 修改pom.xml,增加如下内容。 2、配置Redis 修改application.yml,增

  • 本文向大家介绍教你如何用php实现LOL数据远程获取,包括了教你如何用php实现LOL数据远程获取的使用技巧和注意事项,需要的朋友参考一下 过几天网站就要上线了。 最近完成了一个小功能,就是LOL数据获取, 比如:我给你一个号,你把这个号是否打过排位?战斗力是多少?胜率和所在的总场数数据获取过来 数据都在多玩的网站上可查,所以该做的功能就是远程抓取。 功能没啥亮点,就是简单的实现。 反正就是JS不

  • 我已经用angular 5.0和创建了渐进式Web应用程序(PWA)。net核心2.0。它在脱机模式下工作正常。但脱机模式下仅缓存静态数据。我需要将以前请求的网络数据存储在service worker缓存中,以便在脱机模式下通过service worker缓存获取这些数据。