我正在使用Spring 2.5和我实现MessageListener的自定义类.如果在我的onMessage()方法中抛出JmsException,那么队列的状态会发生什么?
在onMessage被调用的那一刻,消息是否被队列视为"传递"?或者JmsException是否触发某种回滚并且消息在队列中重新输入?
提前致谢!
这段代码在Java 6下编译得很好,但是当切换到Java 7导致编译时错误时"对Foo的引用是不明确的,com.company.Foo中的构造函数<I,C> Foo(C)和构造函数<I> Foo (I)在com.company.Foo匹配"
/**
* Constructor A - acts on a Collection of Iterables
*/
public <I extends Iterable<T>, C extends Collection<I>> Foo(C intervalSeries) {
initialize(intervalSeries);
}
/**
* Constructor B - convenience constructor for callers who only have 1 Iterable
*/
public <I extends Iterable<T>> Foo(I intervals) {
List<I> intervalSeries = newArrayList(1);
intervalSeries.add(intervals);
initialize(intervalSeries);
}
Run Code Online (Sandbox Code Playgroud)
我明白为什么(集合是 Iterables).我打算编写一个Builder辅助类而不是通过提供一个不同命名的构建器方法来区分这两个构造选项来解决这个问题,但在此之前,我想我会问:没有魔法通配符或超级咒语会发生让我离开这个,对吧?
自从我去Perling已经有几个月了,但我完全不知道为什么会这样......
我是OSX的,如果重要的话.
我正在尝试变换文件中的行
08/03/2011 01:00 PDT,1.11
进入stdout线之类的
XXX, 20120803, 0100, KWH, 0.2809, A, YYY
因为我正在读取一个文件,所以我希望chomp在读完每一行之后.但是,当我chomp,我发现我的打印都搞砸了.当我不chomp打印时很好(除了额外的换行...).这里发生了什么?
while(<SOURCE>) {
chomp;
my @tokens = split(' |,'); # @tokens now [08/03/2011, 01:00, PDT, 1.11]
my $converted_date = convertDate($tokens[0]);
my $converted_time = convertTime($tokens[1]);
print<<EOF;
$XXX, $converted_date, $converted_time, KWH, $tokens[3], A, YYY
EOF
}
Run Code Online (Sandbox Code Playgroud)
通过chomp那里的调用,输出全部混淆:
, A, YYY10803, 0100, KWH, 1.11
没有chomp那里的电话,它至少以正确的顺序打印,但是有了额外的新线:
XXX, 20110803, 0100, KWH, 1.11 , A, YYY
请注意,chomp在那里,它就像在第一行"覆盖"新行一样.我添加了$|=1;autoflush,但不知道还能做什么.
思考?并提前感谢....
我正在尝试将spring MVC应用程序从3.0.6升级到3.1.2,并且一些以前工作的控制器似乎不再起作用了.我已经阅读了春季文档,但我对什么与什么兼容感到困惑.
我们有一个CustomWebArgumentResolver,它查找名为"asOf"的任何请求参数,并将其值转换为日期.我们称之为"AsOfDateConverter",缺乏想象力.升级到spring-3.1.2时,我利用了新的命名空间功能并将其添加到我的applicationContext:
<mvc:annotation-driven conversion-service="conversionService">
<mvc:argument-resolvers>
<bean id="customWebArgumentResolver" class="my.converters.CustomWebArgumentResolver">
</bean>
</mvc:argument-resolvers>
</mvc:annotation-driven>
Run Code Online (Sandbox Code Playgroud)
CustomWebArgumentResolver非常简单:
public class CustomWebArgumentResolver implements WebArgumentResolver {
private AsOfDateConverter asOfDateConverter;
@Override
public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest webRequest) throws Exception {
if (isAsOfDateParameter(methodParameter)) {
return asOfDateConverter.convert(webRequest.getParameter("asOf"));
}
return UNRESOLVED;
}
Run Code Online (Sandbox Code Playgroud)
然后一个示例控制器可能看起来像这样:
@Controller
@Secured({BaseController.ROLE_LOGGED_IN})
@org.springframework.transaction.annotation.Transactional
public class DashboardController extends BaseController {
public static final String URL = "/dashboard";
@RequestMapping(value=URL, method=RequestMethod.GET)
public ModelAndView get(@RequestParam(required=false) String requestedMeterType, @AsOf Date asOf) {
debug(log, "Rendering dashboard asOf %s", asOf);
etc etc
Run Code Online (Sandbox Code Playgroud)
"asOf"参数是空的,我确信我错过了一些明显的东西.如果有人在最新的MVC 3.1中深入研究,可能会指出我正确的方向,我将不胜感激.
谢谢!汤姆 …
我已经阅读了一些关于Manifest和擦除避免技术的内容,这些技术允许Scala执行"new Array [Array [T]]"之类的操作,但我对这个有点难过....
我有一种方法可以将数组中的一堆行列表为电子表格.例如,想象一下像这样的2D数组:
11, 5, 4
8, 3, 7
2, 1, 4
Run Code Online (Sandbox Code Playgroud)
我写了一个方法,总结了该数组的列,并吐出了像[21,9,15]这样的一维数组
我想将它泛化为Ints(比如Doubles或Floats),当我添加参数和清单时,我得到编译错误.
这是代码
def sumGrid[T](grid: Array[Array[T]])(implicit m: ClassManifest[T]): Array[T] = {
val sum = new Array[T](grid(0).size)
for(i <- 0 until grid.size) {
for(j <- 0 until grid(0).size) {
sum(j) = sum(j) + grid(i)(j)
}
}
sum
}
Run Code Online (Sandbox Code Playgroud)
这是编译错误:
[ERROR] ...scala/euler/GridOperations.scala:126: error: type mismatch;
[INFO] found : T
[INFO] required: String
[INFO] sum(j) = sum(j) + grid(i)(j)
[INFO] ^
[ERROR] one error found
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?为什么String"必需"?