我正在从DropWizard 0.7.1迁移到0.8.1.这包括从Jersey 1.x迁移到2.x. 在我使用Jersey 1.18.1的实现中,我实现了MyProvider(为简单起见改变了所有类名)InjectableProvider.该类将创建MyInjectable包含自定义注入注释的对象MyToken.MyToken包含传递和读取的各种属性MyInjectable.最后,在Application类中我注册了一个新的实例MyProvider,如下所示.
我做了一些研究,似乎无法解决我在泽西岛2.x中如何重新创建(或替代,我认为)这样一个场景.
这是当前的1.18.1实现:
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.PARAMETER, ElementType.FIELD })
public @interface MyToken {
// Custom annotation containing various attributes
boolean someAttribute() default true;
// ...
}
public class MyProvider implements InjectableProvider<MyToken, Parameter> {
// io.dropwizard.auth.Authenticator
private final Authenticator<String, MyObject> authenticator;
public MyProvider(Authenticator<String, MyObject> authenticator) {
this.authenticator = authenticator;
}
@Override
public ComponentScope getScope() {
return ComponentScope.PerRequest;
}
@Override
public Injectable<?> getInjectable(ComponentContext …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的DateTime对象,设置为日期01-01-0001.我提供了一个值,以天为单位添加到此DateTime.我看到我的结果出现了意想不到的偏差,两天.让我假装我打印出AddDays()调用的结果,如下所示:
DateTime myDateTime = DateTime.Parse("01-01-0001 00:00:00");
Console.WriteLine(myDateTime.AddDays(735768.0));
Run Code Online (Sandbox Code Playgroud)
使用上面的值(735768.0),我预计输出为"6/18/2015 12:00:00 AM".但是,相反,我得到"6/20/2015 12:00:00 AM".当我访问以下网站并计算01-01-0001 - > 06/18/2015之间的持续时间时,我得到的值为735,768天,如预期:
http://www.timeanddate.com/date/durationresult.html?m1=01&d1=01&y1=0001&m2=06&d2=18&y2=2015
我做错了什么,或者我不知道引擎盖下有什么事吗?
如果您想知道,735,768代表我正在使用的数据的第一次值.预计数据将于06/18/2015 00:00:00开始.
编辑:我应该注意,我只是将该特定网站作为冲突源的示例提供.其他网站,包括政府气象局,我得到的数据都给了我06-18-2015.这并不意味着C#是错误的.我更加好奇这个偏移的来源,以及为什么.
我有一个 RESTful Web 服务,使用 Drop Wizard 0.8.5 和 Jersey 2.21。我有一个资源类,其注释为:
@Path("/mysite/somepath")
这个类包含各种方法,例如@GETs、@PUTS等,都工作得很好。
现在,我有另一个用@Path("/mysite"). 在此资源类中,我需要添加一些用路径注释的方法,如下所示:
@Path("/somepath/dothis")
@Path("/somepath/dothat")
Run Code Online (Sandbox Code Playgroud)
资源类都注册得很好。然而,当我调用第二个类时,我得到了 404,因为泽西岛似乎正在我的第一个类中寻找这些方法。除了更改我的 @Path 注释以避免这种命名冲突之外,还有其他方法可以解决此问题吗?