Tag: Java

如果使用TLS / SSL,无法连接到Jetty WebSocket服务器,服务器不响应,为什么?

我正在尝试为使用Jetty嵌入式实例的WebSocket服务器配置安全连接。 这是我如何配置的东西: import org.eclipse.jetty.http.HttpVersion import org.eclipse.jetty.server.* import org.eclipse.jetty.servlet.ServletContextHandler import org.eclipse.jetty.util.ssl.SslContextFactory import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer import org.slf4j.LoggerFactory import java.io.* import java.net.InetAddress import java.security.KeyStore import javax.net.ssl.KeyManagerFactory import javax.net.ssl.SSLContext import javax.net.ssl.TrustManagerFactory import javax.websocket.* import javax.websocket.server.ServerEndpoint (…) @Throws(Exception::class) private fun getServerConnector(): ServerConnector { val connector: ServerConnector if (USE_SSL) { LOG.info(“** Using SSL for all websocket connections **”) val contextFactory = SslContextFactory() […]

引用实现两个或更多给定接口的任何类的对象

给定任何接口I ,可以声明一个variables来保存对实现I的类C任何对象的引用: I i = new C(); 我想要做类似的事情。 给定两个接口,我想声明一个variables,该variables持有对实现这两个接口的类的任何对象的引用: interface Foo { void foo(); } interface Bar { void bar(); } class Humpty implements Foo, Bar { public void foo() { System.out.println(“Humpty.foo()”); } public void bar() { System.out.println(“Humpty.bar()”); } } class Dumpty implements Foo, Bar { public void foo() { System.out.println(“Dumpty.foo()”); } public void bar() […]

如何用Java按媒体密钥?

或者我如何发送相同的命令? 我希望我的应用能够播放/暂停/等。 当前正在播放的媒体在桌面环境 (Windows / macOS / Linux)中,但通过机器人可以按的键看,这些不在那里。 我简单地看了一下jintellitype ,但这似乎并不是我想要的(关于运行Apache服务器的一些事情?) 有没有办法按这些媒体密钥或发送类似的命令操作系统使用Java *? 这可以是Java SE(AWT / Swing / FX等)或其他免费库中的任何东西。 *我正在使用Kotlin,以防万一

Android体系结构组件:如何观察数据库中的单个更改

我有几个问题,请看下面的问题: 守则 。 DAO @Dao public interface PostDao { @Query(“SELECT * FROM posts ORDER by time DESC”) LiveData<List> getAll(); @Query(“SELECT * FROM posts WHERE id = :id”) LiveData<List> getPost(String id); @Insert(onConflict = OnConflictStrategy.REPLACE) @NonNull void insert(StoryPost… posts); @Delete void delete(StoryPost post); @Update void update(StoryPost post); } D b @Database(entities = {StoryPost.class}, version = 5) @TypeConverters(Conveter.class) […]

Java的HTTPS://本地主机(SSL) – 可能没有在客户端上安装证书?

阅读以下内容后,我仍然坚持使最简单的https :// localhost独立安装免费的Web服务器Java应用程序。 它需要无库,使用Java 8,并接受来自浏览器的连接,而无需先安装任何特殊的客户端证书。 我不清楚这是否完全可能与自签名证书,因为它只需要为“localhost”工作。 如何让SSL服务器套接字在java中同时支持http和https? 我简单的java HTTPS服务器只适用于本地主机 简单的Java HTTPS服务器 到目前为止,我已经使用一些关键的文件 openssl genrsa -aes128 -out privkey.pem 2048 # makes privkey.pem openssl req -new -x509 -key privkey.pem # makes cert.crt 我已经拼凑出最低限度的Kotlin设置function private fun ssl():SSLServerSocketFactory { val password = “MYPASSWORD”.toCharArray() val kmf = KeyManagerFactory.getInstance(“SunX509”) val tmf = TrustManagerFactory.getInstance(“SunX509”) val sslContext = SSLContext.getInstance(“TLS”) // initialise the keystore […]

IntelliJ IDEA使用Gradle构建文件中指定的依赖关系的JavaScript“版本”?

最近(过去几天)这个问题开始发生在我的一台开发机器上。 我正在使用Eclipse的Vert.x的依赖关系为一个Web项目: 的build.gradle dependencies { … // Kotlin compile “org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version” // Vert.x for web framework compile group: ‘io.vertx’, name: ‘vertx-core’, version: ‘3.4.2’ compile group: ‘io.vertx’, name: ‘vertx-web’, version: ‘3.4.2’ … } 这在过去运行良好 – 我认为触发行动是我升级到IntelliJ 2017.2.2,但现在: IntelliJ无法解析任何-web导入: 如果我检查我的模块的依赖项列表,将显示依赖项的JavaScript版本? 这是怎么发生的 ,我怎样才能确保它被正确识别为Java依赖? 编辑:示例项目可在这里: https : //youtrack.jetbrains.com/issue/IDEA-177950

如何使用Netty4ClientHttpRequestFactory为Spring AsyncRestTemplate设置代理?

当我使用SimpleRequestFactory和AsyncRestTemplate时,我可以轻松配置一个HTTP代理服务器。 我可以做(Kotlin示例代码): @Bean open fun asyncRestTemplate(): AsyncRestTemplate { val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(“127.0.0.1”, 8008)) val requestFactory = SimpleClientHttpRequestFactory().apply { this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setProxy(proxy) this.setTaskExecutor(taskExecutor()) } return AsyncRestTemplate(requestFactory) } 或者我可以简单地设置相应的系统属性: -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8008 。 然而,在我从SimpleClientHttpRequestFactory切换到Netty4ClientHttpRequestFactory的那一刻,没有直接配置代理的明显方式,看起来这个客户端也不尊重系统属性。 val requestFactory = Netty4ClientHttpRequestFactory().apply { this.setConnectTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) this.setReadTimeout(TimeUnit.SECONDS.toMillis(10).toInt()) //this.setProxy(proxy) //??? } 一旦我换了netty客户端,我不知道如何通过代理。 我对使用netty客户端的兴趣是我不仅要做异步请求,而且我希望这是非阻塞的。 我希望在这里不要做错误的假设。 有谁知道如何使用Netty4ClientHttpRequestFactory时使用代理服务器,也许知道我可以使用Spring支持的另一个非阻塞客户端?

空合并操作符的替代方法

使用Java,为了安全地访问像abcde这样的深层嵌套的引用,我们通常必须在每个级别指定空的检查,或者在Optional s中使用orElse() 。 (与像Kotlin / C#这样a?.b?.c?.d?.e语言不同的是, a?.b?.c?.d?.e或类似的语言。 我想知道下面的辅助方法是否是一个合理的选择: public T valueOrNull(Supplier expression) { try { return expression.get(); } catch (NullPointerException e) { return null; } } 这可以安全地使用value = valueOrNull(() -> abcde) 。 注意:我明白捕获NullPointerException通常是由于性能原因等原因而皱起眉头,但想知道这里的用法是否是一个合理的例外。

可以在Kotlin中编写函数(即在顶层)。 我可以unit testing那些顶级?

如果我在顶层编写代码(在课堂之外)。 我可以编写此代码的JUnit测试,而无需为此测试目的创建类?

Java构造函数reflection抛出与密封类的exception

我在Kotlin项目中有以下密封课程: sealed class Test { abstract val test: String @NoArg data class Test1( override val test: String ) : Test() @NoArg data class Test2( override val test: String ) : Test() } @NoArg注释是一个标记,编译器被配置为为这些类生成一个无参数构造函数。 我的问题是,尝试使用Javareflection结果实例化Test1和Test2中的以下exception: Exception in thread “main” java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at MainKt.main(Main.kt:27) Caused by: java.lang.IllegalAccessError: tried to […]