我正在开发一个Spring MVC REST API.一切正常,这很好,但我从日志中注意到,每次重新启动应用程序时,applicationContext都会加载两次:一次是tomcat加载war文件,第二次是第一次访问web应用程序时客户.
我举几个例子:
我启动tomcat后:
Apr 11, 2013 10:14:35 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.32
Apr 11, 2013 10:14:36 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
2013-04-11 10:14:36 INFO ContextLoader:273 - Root WebApplicationContext: initialization started
2013-04-11 10:14:36 INFO XmlWebApplicationContext:510 - Refreshing Root WebApplicationContext: startup date [Thu Apr 11 10:14:36 EDT 2013]; root of context hierarchy
2013-04-11 10:14:36 INFO XmlBeanDefinitionReader:315 - Loading XML bean definitions from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]
2013-04-11 10:14:36 INFO XmlBeanDefinitionReader:315 - Loading XML …Run Code Online (Sandbox Code Playgroud) 我是easymock的新手.
我试图模拟一个服务,其中一个方法是一个void方法,将被称为未知(和大)次数.如何指定允许任意数量的呼叫?
我知道如何为具有非void返回类型的方法执行此操作.
谢谢
我正在使用PHP API将旧的FB应用程序迁移到新的图形API
我有两个页面:公共的(不需要用户登录)和私人的(有)
所以我的应用程序中每个php页面的代码如下:
if (this_page_requires_user_login){
$facebook = new Facebook(...) ;
$session = $facebook->getSession ;
if (!$session){
$url =$facebook.getLoginUrl(array(next => current_page );
echo "<fb:redirect url=$url/>" ;
}
// the rest of the code continues here
Run Code Online (Sandbox Code Playgroud)
现在您可以看到,这种工作方式将每个页面转发到登录URL,当它工作时,它也很慢并且将&session = {bla}字符串附加到非常单个URL.
在将用户重定向到登录页面之前,我需要一种方法来检查用户已登录的位置.但我在php api中找不到这样的方法.最好的方法是什么?
编辑
这似乎可以解决问题
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
// here comes your code for user who is logged in
}
} catch (FacebookApiException $e) {
login()
}
}else{
login()
}
function login(){ …Run Code Online (Sandbox Code Playgroud) 我和朋友正在构建一个基于java的相当复杂的网站.(PHP本来会更明显,但我们选择了java,因为这个项目的教育方面对我们很重要)
我们已经决定在前端使用JSF(包含richfaces),在后端使用JPA,到目前为止我们已决定不使用EJB3作为业务层.
我们决定不使用EJB3的原因是 - 如果我错了请纠正我 - 如果我们使用EJB3,我们只能在像jboss这样的完整的java应用服务器上运行它,如果我们不使用EJB3,我们可以仍然在像tomcat这样的轻量级服务器上运行它.我们希望记住未来Web服务器的速度和成本.
到目前为止,我已经完成了两个Java EE项目,并且都使用了完整的堆栈
每层都有一个单独的模块.
现在这是我的问题,如果你不在业务逻辑层使用EJB3.这层是什么样的?请问在没有ejb3的情况下开发java web项目时常见的做法是什么?您是否认为业务逻辑层可以完全抛出并在后台bean中具有业务逻辑?如果保留图层,是否所有业务方法都是静态的?或者您是否根据需要在每个会话中根据需要初始化每个业务类?
编辑
我删除了我在这里发布的错误配置,因为我觉得已经有足够的错误/不完整的配置了.经过几天的努力,它让一切按照我想要的方式运作,所以我在这里发布了答案.
我有两个Foo系列.我无法改变Foo的实现,而Foo的equals函数实现不正确.我也不能继承Foo.我做自定义相等功能:我已经使用guava的Predicate函数实现了.为了给你一个想法,实现看起来有点像这样.
new Predicate<Pair<Foo, Foo>>() {
@Override
public boolean apply(@Nullable Pair<Foo, Foo> input) {
Foo one = input.getFirst();
Foo two = input.getSecond();
return Objects.equals(one.getId(), two.getId());
}
};
Run Code Online (Sandbox Code Playgroud)
现在我需要检查我的两个Foo集合是否包含忽略订单的相同项目
我正在寻找使用此自定义相等功能执行此操作的最佳方法.