小编Tom*_*mmi的帖子

RESTful Web服务 - 如何验证来自其他服务的请求?

我正在设计一个RESTful Web服务,需要用户访问,还需要其他Web服务和应用程序访问.所有传入的请求都需要进行身份验证.所有通信都通过HTTPS进行.用户身份验证将基于身份验证令牌工作,通过将用户名和密码(通过SSL连接)POST 到服务提供的/ session资源获取.

对于Web服务客户端,客户端服务后面没有最终用户.请求由计划的任务,事件或一些其他计算机操作启动.连接服务列表事先已知(显然,我猜).我该如何验证来自其他(网络)服务的这些请求?我希望身份验证过程尽可能简单地实现这些服务,但不以安全为代价.对于这样的场景,标准和最佳实践是什么?

我能想到的(或者有人向我建议的)选项:

  1. 让客户服务使用"假的"用户名和密码,并以与用户相同的方式对其进行身份验证.我不喜欢这个选项 - 它感觉不对劲.

  2. 为客户端服务分配永久应用程序ID,也可能是应用程序密钥.据我所知,这与用户名+密码相同.使用此ID和密钥,我可以验证每个请求,或创建身份验证令牌以验证进一步的请求.无论哪种方式,我都不喜欢这个选项,因为任何能够获得应用程序ID和密钥的人都可以冒充客户端.

  3. 我可以在以前的选项中添加IP地址检查.这将使执行虚假请求变得更加困难.

  4. 客户证书.设置我自己的证书颁发机构,创建根证书,并为客户端服务创建客户端证书.但是,有几个问题浮现在脑海中:a)如何在没有证书的情况下允许用户进行身份验证,以及b)从客户端服务的角度来看,这种情况有多复杂?

  5. 还有别的 - 那里必须有其他解决方案吗?

我的服务将运行在Java上,但我故意遗漏了有关它将构建的具体框架的信息,因为我对基本原则更感兴趣,而不是对实现细节更感兴趣 - 我认为最好的解决方案是无论底层框架如何,都可以实现.但是,我对这个主题有点缺乏经验,所以对实际实现的具体提示和示例(例如有用的第三方库,文章等)也将非常感激.

authentication rest web-services restful-authentication client-certificates

115
推荐指数
3
解决办法
12万
查看次数

如何让Intellij Idea显示编译警告?

我用的IntelliJ IDEA 10和Java JDK 6更新7工作当我运行Build --> Rebuild Project命令和文件(javac)编译器会产生警告,理念不显示什么这些警告究竟是在Messages视图.我只看到一个"信息:XX警告"节点,但无法扩展它以查看实际警告.或者我只是在状态栏上看到"编译已成功完成XX警告"消息.对于错误,Idea会自动显示错误信息(错误消息,文件名,行号等).如何让它与警告类似地工作?

(为了记录,我已经尝试过使用其他命令行参数-Xlint,但它没有什么区别.)

javac intellij-idea compiler-warnings

51
推荐指数
1
解决办法
4万
查看次数

在Eclipse中调试Playframework

我刚从Netbeans转到Eclipse.在Netbeans中,我可以开箱即用地调试Playframework应用程序.但是,在Eclipse中,为了调试Web应用程序(特定的Playframework应用程序),似乎很难配置它.

就像玩!文档,

主启动器只能与Run As eclipse命令一起使用.然后,您可以使用"调试为"连接"连接JPDA启动程序"以随时启动调试会话.停止调试会话不会停止服务器.

但是,我无法在"Debug As"(我正在使用Eclipse Classic 3.7.0)中看到"Connect JPDA launcher".我搜索过JPDA(我是Java的新手,不知道"主要启动器"和JPDA,然后在http://javarevisited.blogspot.com/2011/02/how-to中配置远程调试作为指示 -setup-remote-debugging-in.html 但是它返回了一个错误:

无法连接到远程VM.拒绝连接.连接被拒绝:连接

我搜索过并找到了一些建议:

1.)编辑catalina.bat并添加行:set JPDA_TRANSPORT = dt_socket ... set JPDA_ADDRESS = 8000 AND 2.)编辑startup.bat调用"%EXECUTABLE%"jpda start%CMD_LINE_ARGS%

实际上我并不清楚这一点,我想这是配置Tomcat.但是,我正在使用Play!默认服务器,检查application.conf并确保它正在侦听JPDA的端口9000和8000.

当然,我在调试之前启动了Play应用程序,我可以通过端口9000正常访问应用程序.我使用的是没有管理员权限的Win 7.

你有关于调试Play的详细指南吗?在Eclipse中?

eclipse debugging playframework

39
推荐指数
3
解决办法
4万
查看次数

使用ExtJS 4的动态模型

使用ExtJS 3.x,我能够使用商店的"fields"属性,但在ExtJS 4中我似乎必须绝对使用模型.这很好,但就我而言,它不是一个静态模型,我需要动态定义字段,有时需要更改它们.

我可以重新创建一个模型,但我需要使用不同的名称,因为它显然不可能修改现有的模型,也不能删除它.如果我尝试使用具有相同名称的Ext.regModel,则ExtJS崩溃.

谢谢你的帮助!

extjs extjs4

28
推荐指数
2
解决办法
2万
查看次数

Play Framework 2.0和Ebean SQL日志记录

我想检查一下Ebean生成的SQL语句,以找出为什么在我的Play 2.0应用程序中发生某些异常(与SQL语法相关).有没有办法在Play Framework 2.0中记录Ebean生成的SQL语句?

在Play 1.x中,有一个jpa.debugSQL配置选项,如果设置为true,则会执行此操作.Play 2.0是否存在类似的Ebean设置?关于Play 2.0的Ebean文档页面仍然有点稀缺.


到目前为止我尝试了什么:

我在我的控制器和Global对象的onStart/ onRequest方法中添加了这些方法调用,但它没有任何效果:

Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(Play.isDev());
Run Code Online (Sandbox Code Playgroud)

我已经修改了日志级别application.conf,但它也没有帮助(即使是日志级别TRACE).

logging ebean playframework-2.0

24
推荐指数
1
解决办法
1万
查看次数

数据库 - 事实表和维度表

在阅读业务对象的书籍时,我遇到了术语 - 事实表和维度表.这是所有数据库的标准事物,它们都有事实表和维度表,还是仅用于业务对象设计?我正在寻找一个解释,区分两者之间以及它们之间的关系.

编辑:

为什么查询不能从事实表中获取所需的数据?如果所有信息仅存储在一个事实表中会发生什么?通过创建单独的事实和维度表并加入它可以获得哪些优势?

抱歉一次有太多问题,但我想了解相互关系和为什么.

database data-warehouse business-intelligence

13
推荐指数
1
解决办法
2万
查看次数

Akka用于REST轮询

我正在尝试将大型Scala + Akka + PlayMini应用程序与外部REST API连接.这个想法是定期轮询(基本上每1到10分钟)一个根URL,然后爬过子级URL以提取数据,然后将数据发送到消息队列.

我想出了两种方法:

第一路

创建一个actors层次结构以匹配API的资源路径结构.在谷歌纵横案例中,这意味着,例如

在这种情况下,每个actor负责定期轮询其相关资源,以及为下一级路径资源创建/删除子actor(即actor'luitude/v1/location'创建actor1,2,3等等.它通过投票https://www.googleapis.com/latitude/v1/location了解到的所有地点.

第二种方式

创建一个相同的轮询参与者池,接收由路由器负载平衡的轮询请求(包含资源路径),轮询URL一次,进行一些处理,并安排轮询请求(包括下一级资源和轮询URL) .在谷歌纵横中,这意味着例如:

1路由器,n个轮询演员.初始轮询请求https://www.googleapis.com/latitude/v1/location导致了一些新的(即时)查询请求https://www.googleapis.com/latitude/v1/location/1,HTTPS:/ /www.googleapis.com/latitude/v1/location/2等,以及相同资源的一个(延迟)轮询请求,即https://www.googleapis.com/latitude/v1/location.

我已经实现了两种解决方案,并且不能立即观察到任何相关的性能差异,至少不是我感兴趣的API和轮询频率.我发现第一种方法更容易推理,也许更容易使用系统.scheduler.schedule(...)比第二种方法(我需要scheduleOnce(...)).此外,假设资源嵌套在几个级别并且有些短暂(例如,可以在每次轮询之间添加/删除多个资源),akka的生命周期管理可以在第一种情况下轻松杀死整个分支.第二种方法应该(理论上)更快,代码更容易编写.

我的问题是:

  1. 什么方法似乎是最好的(在性能,可扩展性,代码复杂性等方面)?
  2. 你认为这两种方法的设计都有问题(尤其是第一种方法)吗?
  3. 有没有人试图实现类似的任何东西?怎么做的?

谢谢!

rest scala polling akka play2-mini

12
推荐指数
1
解决办法
2234
查看次数

Tomcat和java SDK问题

我试图在eclipse中创建一个新的动态Web项目(在ubuntu中).当我将Target Runtime指向Tomcat V 7.0时,我收到以下警告

runtime "Apache Tomcat v7.0" is invalid. Tomcat requires a Java SDK in order to
compile JSP files. Ensure that the JRE preference settings point to an SDK.
Run Code Online (Sandbox Code Playgroud)

但是已安装的JRE已经显示了java-6-openjdk.我错过了什么吗?

此外,当我忽略它并且无论如何都启动了Tomcat时,它在端口8080中成功启动.但当我说http:// localhost:8080时,它抛出404资源未找到错误.

你在这看到有什么问题吗?

java eclipse tomcat web-applications

10
推荐指数
1
解决办法
3万
查看次数

Scala:如何将一个小型Web服务器嵌入到scala应用程序中?

对于一个旨在帮助人们学习Scala的社区资源的小型教育项目,我正在寻找一种在后台线程中提供和处理网页的简单方法.

最小背景:Scalatron是一款多人游戏,其中玩家将机器人程序(用Scala编写)相互对立.它伴随着一步一步的Scala教程.目前,玩家需要在他们的本地机器上使用IDE来编译机器人,然后通过将机器人复制到共享网络目录中将其发布到游戏中.这很麻烦.对于下一个版本,最好提供基于浏览器的机器人编辑和发布,以最大限度地简化组织者和玩家的设置.

我已经有了一个后台线程工作,它将编译即时到达服务器的Scala源代码(无需完整的IDE).接下来,我必须运行一个小型的Web服务器,为玩家提供一个接入点,并处理机器人上传(这可以摆脱网络共享).

要求是非常基本的:最初我设想用一个编辑框和一个"开始"按钮服务一个页面(=上传到服务器,编译并发布到游戏中); 我希望每隔5或10秒钟,所有用户上传不超过一个机器人的并发用户不超过20个; 我需要为每个用户保持最小状态(只是一个名字),我需要向用户返回编译器错误消息.请注意,游戏屏幕更新不会显示在浏览器中,而是显示在连接到服务器计算机的投影仪上.主要是为了允许最简单的设置(双击游戏服务器.jar)我认为在现有游戏服务器中的后台线程中运行Web服务器会很不错.

最合适的方法是什么?我应该使用一些现有的框架,比如Play或Lift吗?是否存在执行与此类似的操作的代码?计划在这样的后台线程中运行Web服务器是否合理?任何建议表示赞赏.

webserver scala lift playframework

9
推荐指数
2
解决办法
2637
查看次数

有效使用Informatica所需的语言知识是什么?

在接下来的几周内,我的公司将与多家供应商合作,为共同的全球ETL工具建立一个选择 - 不一定是一个无法解决的工具,而只是我们的许可证投资将用于合并这些成本的地方.其中两个主要参与者是Talend和Informatica,其他一些因为这个问题而不重要.

我的经验是Talend的企业ETL工具Talend Integration Suite,它还具有许多标准集成功能.除了两者之间的所有明显的利弊,例如成本,知识资源的可用性等,我的问题是特定于所需的开发语言知识.

我想要一些关于Informatica选项的反馈.我可以从经验中说明要有效地使用Talend,并超出它的预编程范围(经常发生),你需要在Java中有一个像样的背景.在这种情况下,我的意思是直接使用Java - 如果需要附加功能,可以逐字使用Java,而不是Java的"特殊"版本.Informatica的情况如何?您可以使用特定的扩展语言吗?它是专有的,但可能与主流语言密切相关吗?有什么可能需要将它用于任何后果的工作?

这只是我将用于评估空间的一个因素,但在我完全了解情况之前,我需要在Informatica的这个方面加快一点速度.谢谢你的回答!

etl talend informatica-powercenter

8
推荐指数
1
解决办法
2万
查看次数