我正在尝试将Spring Web应用程序部署到在Windows Azure上的生产环境(尝试过Ubuntu和Windows Datacenter VM)上运行的Tomcat 7。可悲的是,生成与ImageIo(下面的堆栈跟踪)一起使用的缩略图时出现错误。
在开发期间,我也使用了Tomcat 7,所以我真的不明白,生产Web服务器上有什么不同。
当我尝试通过ImageIO.scanForPlugins();exakt 加载模块时,会发生同样的事情。标准Java 7 JRE中没有ImageIO(或javax.awt一般而言)吗?
我读过一些关于在META-INF/services/javax.io...上设置子文件夹或以堆模式运行JVM的知识,但是没有任何方法可以解决以下问题。
我想我现在真的靠墙走着,因为我不知道如何解决这个问题。在本地开发环境(Windows 8,Java 7 64位,Tomcat 7)上,我没有执行上述任何提示(堆模式或类文件),并且一切正常。这与应用程序运行在没有GPU或类似功能的服务器上有关吗?
感谢您的提前回复=)
HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIOException report
Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727) …Run Code Online (Sandbox Code Playgroud) 要授予或撤消对我的webapi的访问权限,我使用OAuth密码和tokenrefreshworkflow。
如果我正确理解所有工作流程,则工作流程应如下所示:
到目前为止,上述工作进展顺利。我的问题是,在身份验证请求之后,我没有使过期时间超出用户原则。因此,如果我使用Stateles Webclients,则即使用户令牌有效,我也需要在每次请求中都更新令牌以获取新的到期日期:/
我想要的是/ api / session / information服务之类的东西,它提供有关已认证用户当前会话的一般信息。
如何获取我的到期日期=)
[HttpGet]
[ActionName("information")]
public HttpResponseMessage Information(BaseRequest request)
{
var p = Request.GetRequestContext().Principal;
/* here i need help =) */
}
Run Code Online (Sandbox Code Playgroud) 这几天我一直在学习 DDD,并努力理解聚合根的一些核心概念。也许有人可以给我推动正确的方向,并详细说明在这种情况下的最佳实践:
为了使这个示例不那么复杂,假设我们有一个包含两个实体的域:餐厅和营业时间。餐厅被定义为聚合根。
根据我在所有在线示例中的理解(如果我错了,请纠正我),每次我需要聚合根的实例时,聚合根都会急切地加载所有子实体。因此,每当我想调用餐厅的方法时,都会加载所有营业时间(无论是否使用)。
在此示例中,我想验证当向该餐厅添加新时间时,营业时间不存在交集。在这种情况下,每隔一个开放时间的急切加载是有意义的,因为我需要将它们与现有的进行比较。
但是:这是一种限制,因为我知道每次我想添加另一个集合(比如餐厅图像)时,SQL 负载会越来越重,尽管大多数方法只需要其中一个集合。
我可以想到两种可能的解决方案:
延迟加载
通过实体框架属性代理延迟加载打开时间/子实体。因此,聚合根可以存在而无需急切加载它们,但只要需要它们就可以访问它们。然而,在我到处寻找答案时,我都认为聚合根中的延迟加载被认为是不好的做法。也许有人可以解释原因。
较小的聚合根
当然,我可以将开放时间本身定义为聚合根,但随后我需要将业务逻辑(在本例中为交叉点验证)置于模型之外。
在上面的所有示例中,我仅讨论命令端(而不是查询或序列化)。
也许我缺少一些基本的想法。在这个例子中应该如何组织聚合根以及为什么延迟加载被认为是不好的做法?
编辑 不知道为什么这个问题因为“基于意见”而被关闭。我要求最佳实践以及为什么延迟加载不在这种情况下。