首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生菜6.0.2通过通配符10(为OSGI部署定制)

生菜6.0.2通过通配符10(为OSGI部署定制)
EN

Stack Overflow用户
提问于 2021-02-20 04:13:11
回答 1查看 88关注 0票数 0

我正在尝试在通配符10上部署生菜6.0.2 (它是为部署OSGI包而定制的),它连接AWS elasticache。连接URL如下所示:

代码语言:javascript
运行
复制
RedisURI redisURI = RedisURI.Builder.redis(configProperties.getProperty("ECclusterhost"), Integer.parseInt(configProperties.getProperty("ECclusterport"))).withPassword(pswdcharArray).withSsl(true).build();

独立程序执行良好,但是当我尝试在通配符上部署时,它在调用时给出了以下错误:RedisClusterClient.create(redisURI);

由: org.apache.felix.log.LogException: java.lang.NoClassDefFoundError: javax/net/ssl/ssl参数引起. 42多个原因是: Service中的java.lang.ClassNotFoundException: javax.net.ssl.SSLParameters

pom.xml有以下依赖关系:

代码语言:javascript
运行
复制
<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
    <version>6.0.2.RELEASE</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.9.0</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-common</artifactId>
    <version>4.1.59.Final</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-handler</artifactId>
    <version>4.1.59.Final</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport</artifactId>
    <version>4.1.59.Final</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.projectreactor</groupId>
    <artifactId>reactor-core</artifactId>
    <version>3.3.14.RELEASE</version>
    <scope>compile</scope>
</dependency>
 <dependency>
        <groupId>org.reactivestreams</groupId>
        <artifactId>reactive-streams</artifactId>
        <version>1.0.3</version>
       <scope>compile</scope>
        <optional>true</optional>
    </dependency>

由于javax.net.ssl是JDK 8的一部分,所以在部署通配符-10时它是不可用的。为了加快响应时间,我在生菜群上提出了同样的问题。

更新:

经过几次调整后,原来的错误就消失了。但是OSGI仍然无法部署反应堆API,现在我收到了以下错误:

代码语言:javascript
运行
复制
ERROR [com.icare.elasticacheclient] (Thread-91) [MSC service thread 1-7] Invocation of 'init' failed.: java.lang.NoClassDefFoundError: Failed to link reactor/core/publisher/DirectProcessor (Module "deployment.elasticacheclient-1.0.0.jar:main" from Service Module Loader): Failed to link reactor/core/publisher/FluxProcessor (Module "deployment.elasticacheclient-1.0.0.jar:main" from Service Module Loader): org/reactivestreams/Processor

以下是导入包在pom.xml中的外观

代码语言:javascript
运行
复制
    <Import-Package>
    org.slf4j;version="1.7.7",javax.net.ssl,javax.security.cert
    </Import-Package>
    <Embed-Dependency>lettuce-core,commons-pool2,netty-transport,netty-common,netty-handler,reactor-core,org.reactivestream</Embed-Dependency>
 <Embed-Transitive>true</Embed-Transitive>

不确定反应堆的OSGI集成是否有问题。

EN

回答 1

Stack Overflow用户

发布于 2021-02-25 03:16:21

跑了几天马拉松之后,我就能解决这个问题了。原因之一是log4j2 API的版本,因为我使用了更高的版本,但是在版本2.8.2之后,log4j-api.jar文件也包含了为Java9编译的文件,而旧版本的OSGI无法理解拆分包系统。另外,javax包也不是直接从JVM中获取的。我的最后一个pom.xml文件看起来如下:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>

代码语言:javascript
运行
复制
<parent>
    <artifactId>master</artifactId>
    <groupId>com.companyname.projectmaster</groupId>
    <version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>bundle</packaging>
<artifactId>elasticache</artifactId>
<groupId>com.companyname</groupId>

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <log4j2Version>2.8.2</log4j2Version>
    <slf4j-api.version>1.7.7</slf4j-api.version>
    <io.netty.version>4.1.59.Final</io.netty.version>
</properties>

<dependencies>

    <dependency>
        <groupId>io.lettuce</groupId>
        <artifactId>lettuce-core</artifactId>
        <version>6.0.2.RELEASE</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.9.0</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-common</artifactId>
           <version>${io.netty.version}</version>
           <scope>compile</scope>
       </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-handler</artifactId>
           <version>${io.netty.version}</version>
           <scope>compile</scope>
       </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-transport</artifactId>
           <version>${io.netty.version}</version>
          <scope>compile</scope>
       </dependency>

    <dependency>
        <groupId>io.projectreactor.tools</groupId>
        <artifactId>blockhound</artifactId>
        <version>1.0.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.reactivestreams</groupId>
        <artifactId>reactive-streams</artifactId>
        <version>1.0.3</version>
        <scope>compile</scope>

    </dependency>

    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>3.3.14.RELEASE</version>
       <scope>compile</scope>

    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-api.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>


    <!-- SLF4J Bridge -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>


</dependencies>
<profiles>

    <profile>
        <id>standalone</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <redisclusterhost>ElasticacheClusterName</redisclusterhost>
            <redisclusterport>6380</redisclusterport>
            <authpassword>password</authpassword>
            <minidleconnection>2</minidleconnection>
            <maxidleconnection>5</maxidleconnection>
            <maxtotalconnection>5</maxtotalconnection>
        </properties>
    </profile>
</profiles>
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>3.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Version>1.0.0</Bundle-Version>
                    <Bundle-Activator>com.companyname.ElastiCacheActivator</Bundle-Activator>
                    <Bundle-Vendor>Company Name</Bundle-Vendor>
                    <Bundle-Category>osgi</Bundle-Category>
                    <Export-Package>
                        custom packages to be exported
                    </Export-Package>
                    <Import-Package>
                        org.slf4j;version="1.7.7",javax.net.ssl,javax.security.cert,javax.management
                    </Import-Package>
                   <Embed-Dependency>lettuce-core,commons-pool2,netty-transport,netty-common,netty-handler,reactive-streams,blockhound,reactor-core,log4j-api,log4j-core</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
            </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>1.0.2.Final</version>
            <inherited>true</inherited>
            <configuration>
                <skip>false</skip>
                <filename>${project.build.finalName}.jar</filename>
            </configuration>
        </plugin>
    </plugins>

</build>

代码语言:javascript
运行
复制
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <log4j2Version>2.8.2</log4j2Version>
    <slf4j-api.version>1.7.7</slf4j-api.version>
    <io.netty.version>4.1.59.Final</io.netty.version>
</properties>

<dependencies>

    <dependency>
        <groupId>io.lettuce</groupId>
        <artifactId>lettuce-core</artifactId>
        <version>6.0.2.RELEASE</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.9.0</version>
        <scope>compile</scope>
        <optional>true</optional>
    </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-common</artifactId>
           <version>${io.netty.version}</version>
           <scope>compile</scope>
       </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-handler</artifactId>
           <version>${io.netty.version}</version>
           <scope>compile</scope>
       </dependency>

       <dependency>
           <groupId>io.netty</groupId>
           <artifactId>netty-transport</artifactId>
           <version>${io.netty.version}</version>
          <scope>compile</scope>
       </dependency>

    <dependency>
        <groupId>io.projectreactor.tools</groupId>
        <artifactId>blockhound</artifactId>
        <version>1.0.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.reactivestreams</groupId>
        <artifactId>reactive-streams</artifactId>
        <version>1.0.3</version>
        <scope>compile</scope>

    </dependency>

    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>3.3.14.RELEASE</version>
       <scope>compile</scope>

    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-api.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>


    <!-- SLF4J Bridge -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j2Version}</version>
        <scope>runtime</scope>
    </dependency>
代码语言:javascript
运行
复制
    <profile>
        <id>standalone</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <redisclusterhost>ElasticacheClusterName</redisclusterhost>
            <redisclusterport>6380</redisclusterport>
            <authpassword>password</authpassword>
            <minidleconnection>2</minidleconnection>
            <maxidleconnection>5</maxidleconnection>
            <maxtotalconnection>5</maxtotalconnection>
        </properties>
    </profile>
</profiles>
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>3.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Version>1.0.0</Bundle-Version>
                    <Bundle-Activator>com.companyname.ElastiCacheActivator</Bundle-Activator>
                    <Bundle-Vendor>Company Name</Bundle-Vendor>
                    <Bundle-Category>osgi</Bundle-Category>
                    <Export-Package>
                        custom packages to be exported
                    </Export-Package>
                    <Import-Package>
                        org.slf4j;version="1.7.7",javax.net.ssl,javax.security.cert,javax.management
                    </Import-Package>
                   <Embed-Dependency>lettuce-core,commons-pool2,netty-transport,netty-common,netty-handler,reactive-streams,blockhound,reactor-core,log4j-api,log4j-core</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
            </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-maven-plugin</artifactId>
            <version>1.0.2.Final</version>
            <inherited>true</inherited>
            <configuration>
                <skip>false</skip>
                <filename>${project.build.finalName}.jar</filename>
            </configuration>
        </plugin>
    </plugins>

</build>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66287929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档