首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ALPN和MSSQL驱动程序中使用Pushy抛出java.lang.IllegalAccessError

在ALPN和MSSQL驱动程序中使用Pushy抛出java.lang.IllegalAccessError
EN

Stack Overflow用户
提问于 2016-09-15 11:48:10
回答 1查看 150关注 0票数 1

我正在开发一个应用程序,它通过ALPN使用带有HTTP/2访问的Pushy来向苹果iPhones发送推送通知。

为此,我将JVM配置为根据请求使用ALPN,并使用以下VM参数。

代码语言:javascript
复制
-Xbootclasspath/p:<Path To ALPN JAR>

此连接到Apple Push Notification运行良好。

但是在同一个应用程序中,我有一个MSSQL通过MSSQL驱动程序连接到数据库。但是,当它试图连接到MSSQL时,它会引发以下错误:

代码语言:javascript
复制
java.lang.IllegalAccessError: tried to access field sun.security.ssl.Handshaker.algorithmConstraints from class sun.security.ssl.ClientHandshaker

有人能帮我做这件事或者给我指明正确的方向吗?

全堆栈跟踪

代码语言:javascript
复制
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalAccessError: tried to access field sun.security.ssl.Handshaker.algorithmConstraints from class sun.security.ssl.ClientHandshaker
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
    ... 58 more
Caused by: java.lang.IllegalAccessError: tried to access field sun.security.ssl.Handshaker.algorithmConstraints from class sun.security.ssl.ClientHandshaker
    at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:778)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:285)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:969)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:904)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1050)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1618)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:621)
    at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:57)
    at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:373)
    at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:469)
    at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:162)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:61)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:49)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:78)

删除VM参数修复了Datasource问题,但ALPN连接失败。

更新

Jetty的ALPN-Boot库将覆盖包sun.security.ssl,这个包在jsse.jar中也是可用的(这意味着它是一个JVM核心类),这会导致dataSource失败,因为MSSQL不是HTTP2服务器。

这就是为什么我

代码语言:javascript
复制
java.lang.IllegalAccessError: tried to access field sun.security.ssl.Handshaker.algorithmConstraints from class sun.security.ssl.ClientHandshaker

总之,我可以同时使用HTTP2和HTTP吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-29 10:59:10

通过使用码头代理,我设法解决了这个问题

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

https://stackoverflow.com/questions/39510279

复制
相关文章

相似问题

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