是否可以通过泛型传递接口的类型?
界面:
public interface AsyncCallback<T>
Run Code Online (Sandbox Code Playgroud)
在我的测试方法中:
Mockito.any(AsyncCallback.class)
Run Code Online (Sandbox Code Playgroud)
把<ResponseX>后面或.class没有工作.
我使用Jersey来构建REST服务并希望返回一个Collection<String>XML.
@GET
@Produces(MediaType.TEXT_XML)
@Path("/directgroups")
public Response getDirectGroupsForUser(@PathParam("userId") String userId) {
try {
Collection<String> result = service.getDirectGroupsForUser(userId, null, true);
// return result; //first try
// return result.toArray(new String[0]); //second try
return Response.ok().type(MediaType.TEXT_XML).entity(result).build(); //third try
} catch (UserServiceException e) {
LOGGER.error(e);
throw new RuntimeException(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
但我的尝试失败,出现以下异常:
javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类java.util.ArrayList的消息体编写器,Java类型类java.util.ArrayList,MIME媒体类型text/xml不是发现
我发现通过google处理的返回text/json而不是text/xml就像我的情况一样.
谁能帮我?我想,如果我使用Response,那将是我在XML和我的集合中的根元素,其中包含一个字符串元素列表.
通常应在目标目录中创建生成的源.但是我该如何处理仅用于测试的类?我不希望这些类在我的jar中打包.有没有一种常见的方法来处理这种情况?
我们编写了一个基于spring-security-core和spring-test(范围测试)的组件.当我跑我的第一次测试,它便无法发现LogFactory的commons-logging.我看着pom.xml的spring-security-core,并感到惊讶的是它被排除在spring-core通常提供这种依赖性.该LogFactory的commons-logging使用在不同的弹簧类的编译时间,所以它为什么被排除在外?
JFTR:如果我更改订单,那么
spring-test在spring-security-core一切正常之前列出.
有没有办法通过slf4j传递适用于当前日志事件的更多信息?可以通过MDC存储和访问基于请求的信息,如用户,IP地址或应用程序名称.稍后我可以在布局或转换器中访问该信息,而不必解析日志消息.如果我使用基于JSON的格式,我有另一个字段,"appName":myApp如果我在plaint文本中使用log4j登录,我可以通过%{appName}符号访问它.有没有办法通过适用于一个日志事件的信息来实现这一目标?例如,我想传递一个异常ID(即使是我不拥有的异常).最好但仍然难看的解决方案是将id传递给MDC,记录异常并在之后删除它.有谁知道更好的解决方案?
我在 log4j 中记录正确的日期时间并使用 Logstash 解析它时遇到问题。我设置了一个带有 log4j (1.2.17) 的 tomcat 和一个仅生成一些日志的小应用程序。我记录了时间,%d{ISO8601}
结果是时区丢失,logstash 认为它是 UTC,因为我解析了它。
date {
type => "tomcat"
match => [ "orig_timestamp", "ISO8601"]
}
Run Code Online (Sandbox Code Playgroud)
之后我尝试了以下操作:
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}%d{Z} %-5p %50.50c - %m%n" />
</layout>
Run Code Online (Sandbox Code Playgroud)
但这导致logstash出现以下错误:
{:timestamp=>"2013-10-17T19:13:12.977000+0200", :message=>"Failed parsing date from field", :field=>"orig_timestamp", :value=>"2013-10-17 19:00:02,059+0200", :exception=>java.lang.IllegalArgumentException: Invalid format: "2013-10-17 19:00:02,059+0200" is malformed at " 19:00:02,059+0200", :level=>:warn}
Run Code Online (Sandbox Code Playgroud)
我认为:偏移量中缺少这些。但我怎样才能在没有所有手动尝试和错误的情况下做到这一点呢?我不能只是说打印带有时区的 iso8601 并解析带有时区的 ISO8601 吗?
我想知道当我从 Eclipse 运行或调试应用程序时是否有一个插件或有人有一个脚本可以自动启动 jconsole。也许也添加类路径。我用谷歌搜索但没有找到任何东西。在大多数情况下,这表明它不起作用或者很容易问:D