在最近的一个项目中,我建议在测试工具代码中捕获RuntimeException并记录它.代码处理来自数据库的一系列输入,我不希望测试因任何一个输入失败而停止(Null值,Illegal arguments等).不用说,我的建议引发了激烈的讨论.
捕获任何类型的RuntimeException都可以接受吗?如果是,那么可以捕获RuntimeExceptions的其他方案是什么?
我有一个基于泽西岛的Rest WS输出JSON.我正在实现一个Jersey客户端来调用WS并使用JSON响应.我的客户端代码如下
WebResource r = restClient.resource(UriBuilder.fromUri("http://localhost/").port(8080).build());
String resp = r.path("/user").accept(MediaType.APPLICATION_JSON).get(String.class);
User[] users = r.path("/user").accept(MediaType.APPLICATION_JSON).get(User[].class);
第二行正确输出JSON字符串响应,但第3行将JSON编组到POJO没有发生,我得到以下异常堆栈跟踪
SEVERE: A message body reader for Java class [Lorg.shoppingsite.model.entity.jpa.User;, and Java type class [Lorg.shoppingsite.model.entity.jpa.User;, and MIME media type application/json was not found Dec 21, 2011 11:32:01 AM com.sun.jersey.api.client.ClientResponse getEntity SEVERE: The registered message body readers compatible with the MIME media type are: */* -> com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.StringProvider com.sun.jersey.core.impl.provider.entity.ByteArrayProvider com.sun.jersey.core.impl.provider.entity.FileProvider com.sun.jersey.core.impl.provider.entity.InputStreamProvider com.sun.jersey.core.impl.provider.entity.DataSourceProvider com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General com.sun.jersey.core.impl.provider.entity.ReaderProvider com.sun.jersey.core.impl.provider.entity.DocumentProvider com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General com.sun.jersey.core.impl.provider.entity.EntityHolderReader
我的请求中有正确的MIME类型.我的POJO已使用XMLRootElement注释.我错过了什么
谢谢
我注意到许多Java异常类仅在类的名称上有所不同,并且不添加任何新功能.例如,大多数例外似乎都会覆盖Exception() or Exception(String message).这违背了继承的原则,即: - 继承以添加新功能.
创建新的Exception类有什么好的理由?
我正在尝试创建一个自定义上下文处理器,它将为登录用户呈现菜单项列表.我做了以下事情:
在我的settings.py中,我有
TEMPLATE_CONTEXT_PROCESSOR = (
'django.contrib.auth.context_processors.auth',
'mysite.accounts.context_processors.user_menu',
)
在帐户子模块context_processors.py下,我现在有以下内容:
def user_menu(request):
return {'user_menu':'Hello World'}
在我的模板页面上,我有以下内容:
{% if user.is_authenticated %}
Menu
{{user_menu}}
{% endif %}
调用视图如下:
def profile(request):
return render_to_response('accounts/profile.html',context_instance=RequestContext(request))
但是我无法{{user_menu}}在页面上呈现任何内容,我知道用户已经过身份验证,因为模板的其他部分具有类似的检查正确呈现.我在这里错过了一些东西.请帮忙谢谢
编辑:谢谢Ben,Daniel,我已修复了(S)TEMPLATE_CONTEXT_PROCESSOR,但Django现在无法解析模块,我得到以下消息
Error importing request processor module django.contrib.auth.context_processors: "No module named context_processors"
更新:我通过改变路径来修复它,django.core.context_processors.auth似乎已经移动了模块
我是OSGI的新手,我正在试图弄清楚如何解决下面的错误
org.osgi.framework.BundleException:bundle org.foo.serviceBundle中未解决的约束[253]:无法解析253.0:缺少需求[253.0]包; (&(包= org.slf4j)(版本> = 1.6.0)(!(版本> = 2.0.0)))
我使用maven原型生成一个包,并在我的Activator类中添加了一些简单的slf4j日志.我也使用maven bundle插件如下:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>org.shoppingsite.Activator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我尝试了其他组合,我得到一个不可解析的包或另一个.我正在尝试将该软件包部署到GlassFish appserver上.任何帮助将不胜感激
谢谢
我试图在我的maven pom中激活一个配置文件,如下所示: -
<profile>
<id>test</id>
</properties>
<activation>
<property>
<name>env.SITE</name>
<value>test</value>
</property>
</activation>
</profile>
Run Code Online (Sandbox Code Playgroud)
现在我正在配置heroku以使环境变量SITE如下: -
heroku config:添加SITE = test.
我希望环境变量在推送代码时触发配置文件.然而,这并没有发生.
这是一个简单的测试:我试图在循环中将当前时间戳增加1秒.输出不是我所期望的.
public class TimeTest {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
for (int i = 0; i < 10; i++) {
cal.add(Calendar.SECOND, i);
System.out.println("Updated = " + cal.getTime());
}
}
}
Run Code Online (Sandbox Code Playgroud)
而不是整齐1秒的增量,我从5秒到1秒之间的任何地方获得增量.
Updated = Mon May 13 15:12:45 PDT 2013
Updated = Mon May 13 15:12:46 PDT 2013
Updated = Mon May 13 15:12:48 PDT 2013
Updated = Mon May 13 15:12:51 PDT 2013
Updated = Mon May 13 15:12:55 PDT 2013
Updated = Mon May …Run Code Online (Sandbox Code Playgroud)