[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
java - RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse - Stack Overflow の翻訳。私の場合役に立たなかったんだけどね……
I'm trying to test Keycloak REST API. Instaled the version 2.1.0.Final. I can access the admin through browser with SSL without problems.
Keycloak の REST API version 2.1.0 を使って以下のコードで叩いています。管理者コンソールはウェブブラウザからは全く問題なく https で繋がります。
Keycloak keycloakClient = KeycloakBuilder.builder() .serverUrl("https://keycloak.intra.rps.com.br/auth") .realm("testrealm") .username("development") .password("development") .clientId("admin-cli") .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()) .build(); List<RealmRepresentation> rr = keycloakClient.realms().findAll();
以下のエラーが出ます。
javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:141) at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:60) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) at com.sun.proxy.$Proxy20.grantToken(Unknown Source) at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:85) at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:65) at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:60) at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52) at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:413) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:102) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) at com.sun.proxy.$Proxy22.findAll(Unknown Source) at br.com.rps.itsm.sd.SgpKeycloakClient.doGet(SgpKeycloakClient.java:71) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:42) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:75) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:52) at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:55) at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:251) at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:181) at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:213) at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:105)
以下の依存を maven の pom.xml に追記してみましたがやはり動きませんでした。
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> <version>3.0.19.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <version>3.0.19.Final</version> </dependency>
何かヒントはありませんか?
org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider
を META-INF/services/javax.ws.rs.ext.Providers
に追加してから実行可能 jar を作ってあげると動くよ
回答日時 2016年11月07日 10:09
回答者 MatteoM
org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider
でもよさそう – ArcTanH 2018年02月18日 17:41
maven で build したときうまくいかないんだけどいい方法はない? – Torsten 2019年10月25日 12:11
resteasy-jackson2-provider を pom.xml に追加したけど私の手元でも同じ問題が起こります – John 2019年12月10日 10:21
以下の依存を追加して解決しました
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>3.1.0.Final</version> </dependency>
回答日時 2017年09月07日 11:14
回答者 Bacon
Provider Factory 初期化の前にプロクシ含めたクライアントを作っちゃうのはどうでしょうか?
ResteasyProviderFactory instance=ResteasyProviderFactory.getInstance(); RegisterBuiltin.register(instance); instance.registerProvider(ResteasyJackson2Provider.class);
回答日時 2018年02月18日 07:23
回答者 Dmitry Svn
Dmitry さんがおっしゃる方法を試したら以下の警告が出ました
WARN: RESTEASY002155: Provider class org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider is already registered. 2nd registration is being ignored.
Bacon さんがおっしゃるように provider は依存関係に入っていると自動で追加されるようですね
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>${resteasy.version}</version> </dependency>
回答日時 2018年04月16日 20:23
回答者 Igorski
MatteoM さんがおっしゃる方法を試したけどうまくいきませんでした。しかし、以下のように maven-shade-plugin で tag を変形させたらうまくいきました。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class>de.example.MainClass</Main-Class> <X-Compile-Source-JDK>1.8</X-Compile-Source-JDK> <X-Compile-Target-JDK>1.8</X-Compile-Target-JDK> </manifestEntries> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/services/javax.ws.rs.ext.Providers</resource> </transformer> </transformers> <artifactSet/> <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-fat.jar</outputFile> </configuration> </execution> </executions> </plugin>
回答日時 2019年10月28日 10:06
回答者 Torsten
WildFly 11 と Keycloak を使っている状況で以下のように RestEasyClientBuilder
を使ったらうまくいきました。
ResteasyClientBuilder builder = new ResteasyClientBuilder(); ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance(); builder.providerFactory(providerFactory);
RestEasyProviderFactory
がデフォルトで true になっているか否かにはご注意。false だったら true になるように明示的に書いてあげましょう
ResteasyProviderFactory.setRegisterBuiltinByDefault(true); // または ResteasyProviderFactory がもう入っているなら RegisterBuiltin.register(providerFactory);
回答日時 2020年06月15日 14:47
回答者 Chris
このやり方で上手くいきました。ありがとう! – Mark Larter 2020年08月28日 20:22
弊チームではリモートワーク中もずっと会話していたりする。さぎょいぷ、というやつである。
これ自体はかなりの効果をあげていると思っているけれども、どうして効果が出ているのかを考えてみる。
疑似オフィスである。
当初は私がミーティングなどが無い時間は常駐している通話用チャンネルを1つ用意していた。オフィスにいる時と同様に好きなタイミングで私に話しかけられるようにしたのである。
それが徐々に余裕のあるメンバーが(ないしはないメンバーも)ミーティング以外の時間はそこに常駐するようになった。今の私はミーティングで予定が埋まっていることも多いので常駐はあまりしていないが、見ると大体誰かしらいる。
普段、ずっと話しているのではなく、全員ミュートのまま作業していることも多い。しかし、ふと思ったことを共有したり、わいた疑問点を共有したりすることがしばしばある。
チームメンバー全員が割とそこにいる、というわけではない。人がいると集中できないという人もいるし。しかし、「あそこにいけば誰かしらいる」という感覚があるので相談事があると来てくれるメンバーもいる。
話しかけやすい人がまずは常駐していないといけない。なんとなく人が集まってこないと成り立たないからだ。大半のチームメンバーから話しかけやすいと思われている人がまずは常駐している体制を築き、ちょこちょこ人が集まるようになってくる状態にする。少なからぬ場合、マネージャは「話しかけにくい人」に分類されるのでそこはちょっと難しい。
人知を超えた化け物でないかぎりは単独で仕事をすることは難しい。もちろん、人知を超えた化け物というのはしばしば実在するが私は少なくとも化け物ではない。大体の場合に他の人との連携が求められる。そういった場合に、連携を求める心理的障壁は低いほうが良い。ふと「お昼食べてきます」という発言があって離席した人が戻ってきた際に「何食べてきたの」みたいなどうでもいい質問をすることで質問の心理的障壁を下げる効果を期待できる。
質問の心理的障壁などといった本質的でない課題での業務遅延を防ぐことができる。
また、これを開始した所、内部のみならず外部からもテキストチャットやメールよりも気軽な、ミーティングの予定を入れるまでもない相談をするためにしばしば他チームからも人が訪れるようになった。その場で話してみて重そうな話題の場合は「別途ミーティングしましょう」などと結論することもある。
弊チームは割と重めの話題を扱うことが多いため、相談する側も身構えることがしばしばある。それを緩和するための威力を発揮していると考えている。
タイトルまんまです。NoxPlayer は録画機能もそのままついている便利な Android エミュレータです。が、画面を録画しようとしたら真っ暗な何かに音だけついてくる不気味な何かが撮れて泣いた人もいるかと。
録画しても画面が真っ暗な場合は右上の歯車マークからシステム設定を開き、性能設定からグラフィックスレンダリングモードを "基礎モード(DirectX)" に変更して設定を保存しましょう。ただし、設定保存後に NoxPlayer を再起動する必要があります。
ちびキャラに会話させる必要が会社で発生したのでやり方をメモメモ。
ちゅんちゅんとなくよ
ちゅんちゅん。
めぇめぇとなくよ。
めぇめぇ。
<div style="display: flex; border:1px solid black; border-radius:4px; width:200px;"> <p>ちゅんちゅんとなくよ<br/>ちゅんちゅん。</p> <img src="https://blog.cnobi.jp/v1/blog/user/dae47eb5ba97f522fac369dd34ed4c62/1624551500" style="width: 50px; height: 50px;" alt="" /> </div> <div style="display: flex; border:1px solid black; border-radius:4px; width:200px; margin-top:4px;"> <img src="https://blog.cnobi.jp/v1/blog/user/dae47eb5ba97f522fac369dd34ed4c62/1624551500" style="width: 50px; height: 50px;" alt="" /> <p>めぇめぇとなくよ。<br/>めぇめぇ。</p> </div>
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at java.base/sun.security.ssl.HandshakeContext.(HandshakeContext.java:170) ~[na:na] at java.base/sun.security.ssl.ClientHandshakeContext. (ClientHandshakeContext.java:98) ~[na:na] at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:221) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433) ~[na:na] at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) ~[na:na] at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:316) ~[mysql-connector-java-8.0.16.jar!/:8.0.16] at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188) ~[mysql-connector-java-8.0.16.jar!/:8.0.16] at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:99) ~[mysql-connector-java-8.0.16.jar!/:8.0.16] at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:352) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]
こういう怒られ方をして mysql DB につながらなかった。接続時の TLS プロトコルのバージョンがよろしくなかったために DB に reject されていた模様。使う TLS のバージョンを DB の要求に合わせて指定してやれば良い。DB につなぐ時の URL の末尾に "&enabledTLSProtocols=1.2" などと入れてやると指定できるので適切なものを指定してやったら問題なくつながった。
質問日時 2016年10月04日 21:16
質問者 Maximiliano Nunes Catarino