Tag: dropwizard

Jersey / JAX-RS资源方法输入beanvalidation

我通过DropWizard 0.7.1使用Jersey / JAX-RS来公开RESTful服务端点。 我的所有实体POJO都注释了JAX-RS和Hibernate / JSR-303 beanvalidation注释,如下所示: public class Widget { @JsonProperty(“fizz”) @NotNull @NotEmpty private String fizz; // Can’t be empty or null @JsonProperty(“buzz”) @Min(value=5L) private Long buzz; // Can’t be less than 5 // etc. } 当资源方法接收这些POJO中的一个作为输入时(在引擎盖下,DropWizard已经将HTTP实体JSON反序列化为Widget实例),我想根据Hibernate / Bean Validation注释validation它: @POST Response saveWidget(@PathParam(“widget”) Widget widget) { // Does DropWizard or Jersey have something […]

如何在yml中获取我的配置值 – 使用dropwizard(microservice)Jersey DI @Injection?

这是我的代码片段。 这是我的yml文件: productionServer: host: production-server.amazonaws.com publicIp: xx.xx.xx.xx privateIp: xx.xx.xx.xx userName: xx.xx.xx.xx password: xx.xx.xx.xx remoteFilePath: fake/path/ fileName: test.txt privateKey: private-public-key.ppk server: applicationConnectors: – type: http port: 8080 – type: https port: 8443 keyStorePath: key.keystore keyStorePassword: password validateCerts: false adminConnectors: – type: http port: 8081 – type: https port: 8444 keyStorePath: key.keystore keyStorePassword: password validateCerts: false MyConfiguration类: […]

如何在JDBI中使用IN运算符?

我正在尝试使用Dropwizard上的MYSQL JDBI进行IN查询(不相关,我假设)。 @SqlQuery(“SELECT id FROM table where field in ()”) List findSomething(@BindIn(“list”) List someList); 正如这里所建议的那样,我也用类别注释了这个类 @UseStringTemplate3StatementLocator 但是当我启动应用程序时,我收到以下错误: Exception in thread “main” java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator.errorListener() 有没有人对如何解决这个问题有个好主意?

Dropwizard:如何以编程方式停止服务

要启动该服务,我知道一个使用new MyService().run(args) 。 怎么阻止它? 我需要在我的测试中以编程方式启动和停止setUp()和tearDown() 。

使dropwizard中的cors无法正常工作

我正在研究一个dropwizard应用程序和js ui来与api交互。 我需要加载json数据来更新视图,但我必须在之前启用dropwizard中的cors。 我做了一些工作人员,但它似乎无法正常工作,因为dropwizard总是返回204没有内容。 @Override public void run(final BGConfiguration configuration, final Environment environment) throws Exception { final Map params = new HashMap(); params.put(“Access-Control-Allow-Origin”, “/*”); params.put(“Access-Control-Allow-Credentials”, “true”); params.put(“Access-Control-Expose-Headers”, “true”); params.put(“Access-Control-Allow-Headers”, “Content-Type, X-Requested-With”); params.put(“Access-Control-Allow-Methods”, “GET, POST, PUT, DELETE, OPTIONS”); environment.servlets().addFilter(“cors”, CrossOriginFilter.class).setInitParameters(params); }

如何使用Dropwizard 1.0.2中的LoggingFeature打印服务器响应?

以下代码导致在Dropwizard 0.9.2和1.0.2中打印JSON服务器响应: return ClientBuilder .newBuilder() .build() .register(new LoggingFilter(Logger.getLogger(LoggingFilter.class.getName()), true)) 例如: Oct 21, 2016 7:57:42 AM org.glassfish.jersey.filter.LoggingFilter log INFO: 1 * Client response received on thread main 1 < 401 1 < Connection: keep-alive 1 < Content-Length: 49 1 < Content-Type: text/plain 1 < Date: Fri, 21 Oct 2016 07:57:42 GMT 1 < Server: […] 1 […]

基于没有单例的HttpRequest的jersey 2上下文注入

我想按字段为单个请求注入一个数据存储区,比如 @Context protected HttpServletRequest request; 目前我已经实现了类似的方法: Jersey 2.x自定义注入注释具有属性如下: @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER, ElementType.FIELD}) public @interface TenantDatastore {} public class TenantDatastoreFactory extends AbstractContainerRequestValueFactory { public TenantDatastoreFactory() {} @Override public Datastore provide() { ContainerRequest request = getContainerRequest(); return DatastoreManager.getDs(request.getHeaders().get(“Host”))); } @Override public void dispose(Datastore d) {} } public class TenantDatastoreFactoryProvider extends AbstractValueFactoryProvider { private final TenantDatastoreFactory tenantDatastoreFactory; @Inject public […]

DropWizard Auth领域

在DropWizard中,我可以像这样设置基本身份validation(在Application#run impl中): BasicAuthProvider authProvider = new BasicAuthProvider(authenticator, “SECRET_REALM”); environment.jersey().register(authProvider); 我想知道String realm (“ SECRET_REALM ”)的重要性是什么? 从一般安全概念来看,我理解一个“领域”是一个存储用户和角色/权限的地方(数据库,目录,文件,密钥库等)。 一个领域在DropWizard中意味着什么,以及在BasicAuthProvider中指定它的意义是什么? 它是否在引擎盖下创造了这个领域的东西?

使用dropwizard覆盖带有env变量的服务器连接器配置

我已经在dw邮件列表上发布了这个问题,但没有得到答案。 我可以假设下面的YML格式不再适用于DW 0.7.0吗? (使用@ char插入env var) server: applicationConnectors: – type: http bindHost: @OPENSHIFT_DIY_IP@ port: @OPENSHIFT_DIY_PORT@ 错误: 格式错误的YAML在第28行,第17列; 扫描下一个标记时; 找到无法启动任何令牌的字符@’@’。 (不要使用@代替缩进); 在’reader’,第28行,第17列:bindHost:@ OPENSHIFT_DIY_IP @ 所以我决定使用这种格式: server: type: simple applicationContextPath: / adminContextPath: /admin connector: type: http bindHost: localhost port: 8080 并尝试通过jvm选项覆盖它: java -Ddw.server.connector.bindHost=$OPENSHIFT_DIY_IP -Ddw.server.connector.port=$OPENSHIFT_DIY_PORT -jar target/myapp.jar server myapp.yml 我的本地env变量: OPENSHIFT_DIY_IP=localhost OPENSHIFT_DIY_PORT=8080 我从这个设置得到的错误: 线程“main”中的exceptionjava.lang.RuntimeException:java.net.SocketException:org.eclipse.jetty.setuid.SetUIDListener.lifeCycleStarting(SetUIDListener.java:213)中未解析的地址…引起:java.net.SocketException :sun.nio.ch.Net.translateToSocketException(Net.java:157)中未解析的地址… WARN [2014-05-03 20:11:19,412] […]

使用Jersey的AbstractHttpContextInjectable自定义方法注释不工作

如果以非安全的方式访问某些方法,我想限制它们。 我正在创建一个@Secure注释,用于检查请求是否是通过安全通道发送的。 但是,我无法创建捕获请求的HttpContext的方法injectable。 @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Secure { } public class SecureProvider implements InjectableProvider { @Override public ComponentScope getScope() { return ComponentScope.PerRequest; } @Override public Injectable getInjectable(ComponentContext componentContext, Secure annotation, AbstractResourceMethod method) { return new SecureInjectable(); } } public class SecureInjectable extends AbstractHttpContextInjectable { @Override public T getValue(HttpContext context) { // validation here […]