2014-09-23 98 views
0

我们有两个应用程序,一个是Java EE动态Web应用程序,可通过Internet以复杂的身份验证机制访问。 第二个是基于Spring MVC框架(3.0以上)构建的新应用程序。这两个应用程序都部署在同一个WAS服务器上。从“Java EE Dynamic Web”应用程序访问“Spring MVC”应用程序

现在,我们需要从新的应用程序访问的一些细节(如基于员工ID员工详细信息)到的Java EE Web应用程序。

即使用一个方法调用从的Java EE Web应用程序的新应用程序通过传递一些参数(EMPID)以及更新一些细节等

我们不打算重新验证新的Spring应用程序。

有人可以帮助如何做到这一点?

+0

你是什么意思“不重新认证”? SSO还是没有身份验证? – 2014-09-23 08:33:43

+1

您可以将“JEE Dynamic Web应用程序”分成两个项目。一个是表示层,另一个是核心业务逻辑。业务逻辑不能从公共网络访问。因此,您可以通过api集成共享“旧jee应用程序”和“新spring应用程序”的业务逻辑,而不会破坏任何的身份验证。 – 2014-09-23 08:47:13

+0

@MartinBaumgartner:不重新认证意味着SSO只有 – Kiran 2014-09-23 12:40:27

回答

0

您必须将两个应用程序都配置为在WAS服务器中使用相同的会话存储。 在查询新的Spring应用程序时,可以通过如下方式传递url:

http://<host>:<port>/newapplication/user/1?JSESSIONID=<JavaEEApplicationSessionID> 

哪里JavaEEApplicationSessionID是当前JSESSIONID您已经登录到使用Java EE应用程序。这样,新的Spring应用程序将在共享会话存储中查找JSESSIONID,并且不会要求重新进行身份验证,因为它可以找到有效的会话。

+0

,谢谢你的建议,我可以直接访问API级别的任何方法吗?就像上面“Jeff lee's”评论中分享业务逻辑一样。 – Kiran 2014-09-23 12:44:52

0

正如杰夫李建议,你需要拆分你的应用程序Java EE风格

这意味着您的项目将成为您的Web应用程序的一个war文件和一个包含您的EJB的jar文件。然后你的EJB(考虑到它们配置正确)可以被这两个应用程序访问。

为了实现这一目标,您需要将您的Java EE应用程序打包为EAR文件。 来自Oracle的老版Java EE教程给你一些指导。 http://docs.oracle.com/javaee/7/tutorial/doc/packaging001.htm#BCGDJDFB

这是EJB背后的基本思想。您的业​​务逻辑将在所有应用程序中变得可用(并且可重用),并且对其中一个BL的更改将反映在所有应用程序中。

+1

感谢您的建议,我会尝试这种方法。 – Kiran 2014-09-24 02:27:22

+0

是的,感谢分享细节。但我认为j2ee的基础是使用RMI来分离业务逻辑。我不确定你能从春季做一个rmi。应该是的?但是如果我这样做,我会在您的专用网络中创建一个像http://xxxxxx.com/getUser.json这样的API列表以共享该服务。 – 2014-09-24 03:24:39

+0

还有一件事要注意,这个频道不是交易 – 2014-09-24 03:30:21

相关问题