如何检查我是否使用Java服务登录到外部应用程序? - java

我在两台服务器上有两个单独的Web应用程序。一个是PHP应用程序,第二是Java应用程序。从PHP applicaton,我需要询问Java应用程序是否“我已登录Java应用程序”。我尝试使用curl,但是它总是返回“ false”-这很有意义,它对会话一无所知。

因此,我尝试使用javascript / jQuery发送请求,并且始终显示消息“无法连接到主机”。我发现XMLHttpRequest()在跨平台上不起作用。

当我使用浏览器询问服务“是否我已登录Java应用程序”时,我收到正确的响应。但是问题是,当我尝试从php应用程序执行相同操作时。

参考方案

不确定“ XMLHttpRequest()不能跨平台工作”的含义。这只是来自浏览器的HTTP客户端请求,对于PHP或Java Web应用程序都没有什么区别。

您必须多了解“我已登录Java应用程序”的实际工作方式。
Java应用程序通常将使用HTTP标头发送cookie,而浏览器(出于明显的安全原因)将不会将会话信息从一个Web应用程序混合到另一个Web应用程序。

根据您所描述的内容,您尝试实现的目标称为“单点登录”(即,您登录到一个应用程序,其余应用程序将能够使用同一会话)。这需要更多的工作。您必须查看类似SAML的内容。

不久前,我在另一个答案上找到了此演示文稿并将其添加为书签,您可能想看看它。有点旧,但仍然有用,然后看看PHP和Java的最新和最佳工具是什么。

http://www.slideshare.net/craigsdickson/fast-and-free-sso-a-survey-of-open-source-solutions-to-single-sign-on

这是PHP中的SAML API:http://simplesamlphp.org/

这是旧版Sun OpenSSO的替代API:http://forgerock.com/products/open-identity-stack/openam/

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java DefaultSslContextFactory密钥库动态更新 - java

我有一个使用org.restlet.engine.ssl.DefaultSslContextFactory的现有应用程序和一个在服务器启动时加载的密钥库文件。我有另一个应用程序,该应用程序创建必须添加的证书服务器运行时动态地更新到密钥库文件。为此,我在代码中创建了证书和私钥,然后将其写入到目录。该目录由bash脚本监视,该脚本检查是否有新文件,如果出现,它将…