小编Lau*_*ent的帖子

Swagger with Resteasty 3 + Jetty 9.2 + JAX-RS 3

我正在尝试配置现有的应用程序以使用Swagger.该应用程序使用Resteasy 3和Jetty 9.2以及JAX-RS 3.

我的更改基于Swagger wiki上的解释.

我首先在build.gradle中添加了swagger 1.5.0,然后在名为SchedulerStateRest的资源上添加注释@Api@ApiOperation.

下一步是编辑我的web.xml,以便使用Swagger的Servlet 在我的ApplicationInitialize Swagger中连接Swagger-Core.

我的问题是,当我启动我的应用程序,没有相应的资源,当我浏览发现/swagger.json/swagger.yamlHTTP://本地主机:8080.但是,启动Jetty并且现有服务正在运行且可用时,我没有收到任何错误.

我已经启用了Jetty日志但是我没有找到与我相关的信息(启动Jetty嵌入式的负责人是JettyStarter).

通过查找类似的问题,我发现有些人说在/ v1/api-docs上应该提供swagger内容,所以我尝试了不同的URL,但我总是遇到404错误.

最近,我发现了ben- manes的一个要点,用Resteasy 3 + Guice 4来配置swagger.我试图模仿它的配置,并根据Guice-servlet的解释推断出web.xml的配置,但我最终遇到的问题与上面说明的配置(没有可用的资源是预期的地址).

由于启动嵌入式Jetty时没有错误,我想知道问题是否与错误的地址无关.您知道如何列出Jetty实例上可用的"资源"吗?

我注意到Swagger维基上的解释是针对Resteasy 2.X. 这是否意味着Swagger与Resteasy 3.x不兼容?

调试的想法,建议等,欢迎解决问题;)

jetty jax-rs resteasy swagger

10
推荐指数
1
解决办法
1017
查看次数

将Gradle与本机依赖项一起使用

我想在Gradle项目中使用Sigar.默认情况下,Sigar分发提供了两种类型的文件:

  • 包含类的JAR
  • 一些本机文件(.so,dylib,.dll)

我的目的是重新打包这些文件,以便我可以将它们用作从个人Maven存储库按需部署和下载的依赖项.

我的第一次尝试是将依赖项定义为文件,以便在重新打包之前检查我的应用程序是否按预期工作.下面是我用于第一次测试的Gradle代码:

dependencies {
  compile files("${rootDir}/lib/sigar/sigar.jar")
  runtime fileTree(dir: "${rootDir}/lib/sigar/", exclude: "*.jar")
}
Run Code Online (Sandbox Code Playgroud)

然后,我将Sigar本机文件重新打包到JAR中并重命名另一个以匹配maven工件的规则,因为我想将它们部署在Maven存储库中.以下是我得到的:

  • sigar-1.6.4.jar(包含.class文件)
  • sigar-1.6.4-native.jar(在根目录下包含.dylib,.so和.dll文件)

下一步是在我的自定义存储库中部署这些文件.然后,我更新了我build.gradle的内容如下:

dependencies {
  compile 'sigar:sigar:1.6.4'
  runtime 'sigar:sigar:1.6.4:native'
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我这样做时gradle clean build,会获取新的依赖项,但在运行时无法再找到本机库,因为现在我得到以下异常:

Error thrown in postRegister method: rethrowing <java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo;>
Run Code Online (Sandbox Code Playgroud)

因此,我正在寻找一种解决方案来获取和链接本机文件到我的Java应用程序,就像其他依赖项一样.欢迎任何建议,评论,建议,帮助,解决方案等;)

java gradle build-dependencies build.gradle

9
推荐指数
1
解决办法
7980
查看次数

未捕获的SyntaxError:标识符'baseUrl'已被声明

我使用Firebase托管部署了一个Polymer webapp.

视图之间的路由工作但错误页面处理不起作用.

我已成功使用官方聚合物-2启动器套件示例在最小的示例中重现该问题:

https://fir-polymer-404-issue.firebaseapp.com/

例如,如果您打开以下URL,则不会显示错误页面:

https://fir-polymer-404-issue.firebaseapp.com/not-existing

相反,我收到以下错误:

my-not-existing.html:56 Uncaught SyntaxError: Identifier 'baseUrl' has already been declared
    at my-not-existing.html:56
(anonymous) @   my-not-existing.html:56
Run Code Online (Sandbox Code Playgroud)

用于前一个示例的配置文件firebase.json位于:

{
  "hosting": {
    "public": ".",
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望Polymer能够处理错误页面.

请注意,相同的应用程序polymer serve可以正常工作.

似乎问题来自Firebase托管配置.所有流量都会重定向到index.html,因此当Polymer加载不存在的页面时,Firebase服务器会返回HTTP 200响应.不幸的是,我不知道如何解决问题.

我试图仅使用以下配置文件为非404响应创建重定向:

{
  "hosting": {
    "public": ".",
    "redirects": [
      {
        "source": "**",
        "destination": "/index.html",
        "type": 200
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,type属性只能用于3xx代码:

Error: HTTP Error: 400, hosting.redirects[0].type is not one …
Run Code Online (Sandbox Code Playgroud)

javascript firebase polymer firebase-hosting

8
推荐指数
1
解决办法
1739
查看次数

定制微调器的间距

旋转器提供两种状态.第一个和默认状态(状态A)显示当前选定的值.第二个(状态B)显示触摸微调器显示时的下拉菜单.

状态A和B的例子

默认情况下,左填充被添加到在状态A和B中显示的项目我想删除它被显示在当前所选的值(状态A),但保留它当项目被显示在下拉菜单中(状态B) .

由于填充设置与CheckedTextView中创建微调时指定的布局中,我第一次尝试是传递给微调构造包含空填充一个CheckedTextView自定义布局.这样,左边的填充在状态A中消失,但也在状态B中消失.但是,我的目标是将其保留在状态A.

我的第二次尝试是在我的主题定义中自定义android:dropDownSpinnerStyle.由于更改android:dropDownSpinnerStyle的背景颜色仅更改状态A中项目的背景颜色,我的想法是用负值覆盖marginLeft或paddingLeft.不幸的是,它没有任何效果.

鉴于负边距/填充似乎没有被考虑在内,我尝试了相反的做法.首先,我使用了自定义项目布局(如我第一次尝试所述),以便删除两个状态(A和B)上的左边距.其次,我已经为属性android定义了一个自定义样式:dropDownListViewStyle.不幸的是,在最后一个属性中使用正的marginLeft值无效.因此,我设置了paddingLeft.它工作,并允许我只获得状态B的左边距.但是,左侧空间也适用于背景触摸颜色(参见下图).

在此输入图像描述

我认为如果我想要完全填充下拉菜单宽度的触摸背景颜色,则只应更改状态A的样式.任何想法,建议或例子都受到欢迎.

以下是我第三次尝试的主题定义:

<style name="Theme.App.Base" parent="Theme.App">
    ...
    <item name="android:dropDownListViewStyle">@style/Widget.Spinner.DropDown.ListView</item>
</style>

<style name="Widget.Spinner.DropDown.ListView" parent="Widget.AppCompat.ListView.DropDown">
    <item name="android:paddingLeft">16dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-layout android-spinner drop-down-menu

7
推荐指数
1
解决办法
1万
查看次数

用于数字的生菜 RedisCodec

第一次使用 Lettuce 5 作为 Redis 客户端,我发现简单地创建一个RedisCommands<String, Long>用于获取/设置 Redis 值作为 Long 的对象相当混乱。

我有点不清楚我如何才能做到这一点。据我所知,最简单的方法是使用带有and的RedisClient重载构造函数,但似乎我还需要实现编解码器解码/编码方法?RedisCodecRedisURI

由于存储数字是 Redis 的一个相当常见的用例,我发现这种方法相当臃肿,而且我很惊讶没有预定义的整数/长编解码器。鉴于此,我怀疑可能有一个我没有遇到过的更简单的替代方案。有替代方法吗?

java redis lettuce

7
推荐指数
1
解决办法
565
查看次数

使用 Gradle 访问私有 Maven Github 包注册表

我在用户X和存储库名称Y下有一个私有存储库:

https://github.com/X/Y

这是一个用 Gradle 构建的 Java 项目。

Gradle 配置文件已按照官方Github 包注册表文档中的说明进行配置,我可以成功发布包:

https://help.github.com/en/articles/configuring-gradle-for-use-with-github-package-registry#publishing-a-package

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/X/Y")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_PACKAGE_REGISTRY_USER")
                password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_PACKAGE_REGISTRY_API_KEY")
            }
        }
    }
    publications {
        github(MavenPublication) {
            groupId = 'A'
            artifactId = 'B'
            version = '1.0.0'

            from(components.java)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您在上面的配置中看到的,我分别使用了AB作为 groupId 和 artifactId。版本是 1.0.0。

我的问题是从另一个 Gradle 项目中检索此私有依赖项。这个项目有一个特定的存储库配置如下:

repositories {
    jcenter()
    maven {
        url = …
Run Code Online (Sandbox Code Playgroud)

github gradle maven github-package-registry

7
推荐指数
1
解决办法
1892
查看次数

使用 Gradle maven-publish 和签名插件时缺少校验和文件

我有一个 Java 项目,它使用 Gradle 来构建和打包。我的目的是创建发布到 Maven Central 的工件。

第一步,我配置了 Gradle 项目,如文档中的以下示例所示:

https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example

当我运行时gradle publishToMavenLocal,我会在本地存储库中安装以下文件:

maven-metadata-local.xml
my-library-1.0.2-SNAPSHOT.jar
my-library-1.0.2-SNAPSHOT.jar.asc
my-library-1.0.2-SNAPSHOT-javadoc.jar
my-library-1.0。 2-SNAPSHOT-javadoc.jar.asc
my-library-1.0.2-SNAPSHOT.pom
my-library-1.0.2-SNAPSHOT.pom.asc
my-library-1.0.2-SNAPSHOT-sources.jar
my-library- 1.0.2-SNAPSHOT-sources.jar.asc

文件一切正常。我遇到的唯一问题是未生成校验和文件(md5 和 sha1)。然而,校验和文件是通过 OSS Sonatype 在 Maven Central 上部署工件的必要条件。

如何生成丢失的校验和文件?似乎maven-publish签名插件没有用于此目的的选项?怎么了?

sonatype gradle maven maven-central maven-publish

6
推荐指数
1
解决办法
977
查看次数

com.ctc.wstx.exc.WstxParsingException:文本大小限制

我正在向 CXF 网络服务发送一个大附件,但出现以下异常:

引起:javax.xml.bind.UnmarshalException - 链接异常:[com.ctc.wstx.exc.WstxParsingException:文本大小限制(134217728)在[row,col {unknown-source}]处超出:[1,134855131] ] 在 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426) 在 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426) ) 在 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:76) cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:94) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder$1.run(JAXBEncoderDecoder.java:797) 在 java.security.AccessController。doPrivileged(Native Method) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:795) ... 25 更多

这个问题似乎来自 Woodstox 图书馆说

超出文本大小限制 (134217728)

有人知道是否可以增加这个限制吗?如果是,怎么办?

configuration web-services cxf woodstox

5
推荐指数
1
解决办法
5539
查看次数

获取 Android 付费应用购买日期

假设我有一个用户购买的付费应用程序(我不使用应用程序内结算)。是否可以在他的设备上执行一段代码来获取该用户购买我的应用程序的日期?

android purchase-order google-play

5
推荐指数
1
解决办法
881
查看次数

在 Firebase 身份验证和数据库之间保持电子邮件同步

我将 Firebase Web 用于 SaaS 解决方案。我的目的是随时访问用户的电子邮件,用于发送通知或从后端触发警报。

出于安全原因,Firebase 身份验证不允许列出用户的电子邮件或根据用户 ID 获取电子邮件。因此,当创建用户帐户时,我将电子邮件的副本保存在 Firebase 数据库中的特定集合中。该副本由在用户创建时触发的 Cloud 函数制作(遵循指南:https : //firebase.google.com/docs/auth/extend-with-functions)。

感谢 Firebase 数据库中提供的副本,我可以访问用户的电子邮件。但是,我的问题是当用户更改他的电子邮件时。

Firebase auth 提供了返回承诺的updateEmail函数。我最后使用它来更新 Firebase 身份验证中的电子邮件。然后,当承诺解决时,我会更新 Firebase 数据库中的用户电子邮件。但是,这有一个主要缺点:所有逻辑都在客户端执行,并且由于如果客户端刷新或关闭浏览器(或假设它崩溃),这两个操作都不会在事务中执行,那么 Firebase 身份验证可能是已更新但未更新 Firebase 数据库,从而导致状态不一致。

我查看了文档,希望在更新用户身份验证信息时有可能触发 Cloud 功能。不幸的是,我找不到这样的功能。

我想到的另一个解决方案是从 Web 客户端更新数据库。然后,这最后会触发一个 Cloud 函数,该函数使用admin SDK更新 Firebase 身份验证。最后一个解决方案有效,但绕过了updateEmail执行的检查,以确保新电子邮件不被其他帐户使用。此外,updateEmail执行的帐户劫持保护被驱逐,从安全角度来看,这确实很糟糕。

欢迎任何正确解决此问题的想法。

firebase firebase-authentication firebase-realtime-database serverless-framework

5
推荐指数
1
解决办法
722
查看次数