Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 41 Next »

[09:22:33 CDT(-0500)] <EricDalquist> good moring'

[09:23:02 CDT(-0500)] <Arvids> good evening (smile)

[09:23:18 CDT(-0500)] <EricDalquist> that too (smile)

[09:23:42 CDT(-0500)] <Arvids> I just realized that import/export manual of uP40 is outdated (sad)

[09:23:53 CDT(-0500)] <Arvids> filing an issue now

[09:23:57 CDT(-0500)] <EricDalquist> yeah

[09:24:01 CDT(-0500)] <EricDalquist> I have that page open

[09:24:06 CDT(-0500)] <EricDalquist> and a todo to finish clearning it up

[09:24:11 CDT(-0500)] <EricDalquist> thanks for the jira issue though

[09:27:04 CDT(-0500)] <Arvids> https://issues.jasig.org/browse/UPD-74

[09:27:38 CDT(-0500)] <EricDalquist> on an unrelated rant ... I really wish hsqldb 2.2 had row level locking :/

[09:28:01 CDT(-0500)] <EricDalquist> without it I have to disable a few unit tests unless they are running against a 'real' db

[09:28:45 CDT(-0500)] <Arvids> concurrency issues?

[09:28:56 CDT(-0500)] <EricDalquist> working on the stats aggregation stuff

[09:29:07 CDT(-0500)] <EricDalquist> and as a pre-req I need a portable way to aquire a lock within a cluster

[09:29:11 CDT(-0500)] <Arvids> yeah, I saw previous commits

[09:29:31 CDT(-0500)] <EricDalquist> what I'm doing is using the JPA2 lock abilities

[09:30:10 CDT(-0500)] <EricDalquist> which on any DB other than hsqldb works great, it does a "select for update"

[09:30:22 CDT(-0500)] <EricDalquist> and holds the tx open until the work is complete

[09:30:48 CDT(-0500)] <EricDalquist> that should result in any other tx trying to do a select for update on that row to block

[09:30:53 CDT(-0500)] <EricDalquist> except on hsql

[09:30:56 CDT(-0500)] <EricDalquist> where it just doesn't (tongue)

[09:31:29 CDT(-0500)] <Arvids> I believe you can't wish for everything from bundled database (tongue)

[09:31:42 CDT(-0500)] <EricDalquist> (smile)

[09:31:45 CDT(-0500)] <EricDalquist> I know

[09:31:57 CDT(-0500)] <EricDalquist> really I'm just happy that they finally added true tx isolation in 2.2

[09:32:11 CDT(-0500)] <Arvids> btw, why derby is not used so extensively?

[09:32:32 CDT(-0500)] <Arvids> mostly I hear about hsql, but few years ago derby was very promising, too

[09:32:40 CDT(-0500)] <EricDalquist> don't know, I've never really looked into it

[09:34:03 CDT(-0500)] <EricDalquist> though looking at the DerbyDialect it appears to support row level locking (tongue)

[09:38:25 CDT(-0500)] <Arvids> http://www.h2database.com/html/features.html#comparison says that hsqldb supports row level locking :S

[09:38:36 CDT(-0500)] <Arvids> *9 When using MVCC (multi version concurrency).

[09:40:00 CDT(-0500)] <EricDalquist> yeah

[09:40:21 CDT(-0500)] <EricDalquist> but from looking in the forums their "row level locking" isn't actual blocking

[09:41:11 CDT(-0500)] <Arvids> sad

[09:41:14 CDT(-0500)] <EricDalquist> hrm

[09:41:25 CDT(-0500)] <EricDalquist> though I'll give enabling MVCC a try

[09:44:17 CDT(-0500)] <EricDalquist> yup just enabled MVCC and still no blocking

[09:50:12 CDT(-0500)] <Arvids> btw, can I deselect some of the commits while creating pull request?

[09:50:28 CDT(-0500)] <Arvids> I select "Pull Request" and it shows all my commits

[09:50:47 CDT(-0500)] <Arvids> ... including "Merge remote-tracking branch 'upstream/master'"

[09:52:33 CDT(-0500)] <Arvids> Found out how to create a pull request with only one commit

[09:53:41 CDT(-0500)] <EricDalquist> once you click "Pull Request" there is the link in the upper right to select specific commits

[09:53:59 CDT(-0500)] <EricDalquist> though in theory your feature branch should only contain commits for that feature

[10:39:13 CDT(-0500)] <b-rock> Greetings uPortal devs: do you know if a servlet running in the portal has visibility to the portlet session? or how to accesss the portlet session from a servlet?

[10:40:11 CDT(-0500)] <EricDalquist> your question is a little inconsistent

[10:40:20 CDT(-0500)] <EricDalquist> are you asking about a servlet in a portlet application

[10:40:25 CDT(-0500)] <EricDalquist> or a servlet in uPortal itself

[10:40:41 CDT(-0500)] <b-rock> well the gateway sso portlet interacts with a servlet thats added to uPortal

[10:41:13 CDT(-0500)] <EricDalquist> I'm not familiar with gatewaysso, does it live in a webapp external to the uPortal webapp?

[10:41:16 CDT(-0500)] <b-rock> and in the portlet some data about the user is set.

[10:41:29 CDT(-0500)] <b-rock> no it is within the uPortal context

[10:41:53 CDT(-0500)] <b-rock> there are links in the portlet interface that call the servlet directly.

[10:42:13 CDT(-0500)] <b-rock> the servlet is trying to pull data about the user from the servlet session.

[10:42:46 CDT(-0500)] <b-rock> somehow this is working in the 3.2 build but doesnt' work so far in the new build

[10:43:39 CDT(-0500)] <b-rock> I do see this arrtName: 'org.jasig.portal.security.IPerson' in the servlet session. maybe thats a handle for the person object

[10:43:41 CDT(-0500)] <EricDalquist> ok, so the gatewaysso portlet is some code portlet + servlet code that is added to the uPortal web application

[10:43:47 CDT(-0500)] <EricDalquist> there is no additional webapp in tomcat for it

[10:43:54 CDT(-0500)] <b-rock> yes.

[10:44:05 CDT(-0500)] <athena> there is an additional webapp

[10:44:10 CDT(-0500)] <EricDalquist> so then it sees the portal session

[10:44:19 CDT(-0500)] <EricDalquist> portlets and servlets in one webapp share a single session object

[10:44:25 CDT(-0500)] <athena> there are a few jars that are added to uportal, plus adding a servlet

[10:44:30 CDT(-0500)] <EricDalquist> portlets have two scopes for accessing the session

[10:44:30 CDT(-0500)] <athena> and then there's a separate webapp

[10:44:34 CDT(-0500)] <athena> the whole thing is pretty complex

[10:44:42 CDT(-0500)] <EricDalquist> application scope accesses the session just like a normal servlet

[10:44:46 CDT(-0500)] <athena> and should be rewritten as a JSR-286 portlet

[10:44:53 CDT(-0500)] <EricDalquist> portlet scope namespaces session attributes to that portlet's window id

[10:45:13 CDT(-0500)] <EricDalquist> there is NO WAY to access one webapp's session from another webapp though

[10:45:54 CDT(-0500)] <athena> it doesn't really - it has a servlet that spits javascript out of the uportal webapp, i believe

[10:46:10 CDT(-0500)] <athena> i can't remember exactly what the workflow is

[10:46:36 CDT(-0500)] <b-rock> yeah. I'm guessing at the workflow myself but I see that the servlet is called everytime the portlet is rendered.

[10:46:54 CDT(-0500)] <athena> yeah, i believe it's called via ajax

[10:47:10 CDT(-0500)] <b-rock> there appear to be some porltet related data in the servlet session arrtName: 'org.jasig.portal.user.UserInstanceManagerImpl.USER_INSTANCE' .

[10:47:26 CDT(-0500)] <EricDalquist> portal related data you mean?

[10:47:39 CDT(-0500)] <b-rock> yes portal not portlet.

[10:47:59 CDT(-0500)] <b-rock> although there is this. 'org.jasig.portal.portlet.session.PortletSessionExpirationManager.PORTLET_SESSIONS'

[10:48:09 CDT(-0500)] <EricDalquist> since the servlet is part of the uPortal webapp it would have access to the entire uPortal session

[10:48:18 CDT(-0500)] <EricDalquist> uPortal stores a lot of data in the session

[10:48:28 CDT(-0500)] <EricDalquist> but ALL of it is stored and accessed through utilities

[10:48:54 CDT(-0500)] <EricDalquist> bad things will happen if you start poking around with existing portal session attributes (reading from or writing to) without going through the appropriate accessor API

[10:49:21 CDT(-0500)] <EricDalquist> like to get the IUserInstance you should inject IUserInstanceManager into your code

[10:49:29 CDT(-0500)] <EricDalquist> and use: "IUserInstance getUserInstance(HttpServletRequest request)"

[10:49:33 CDT(-0500)] <b-rock> yes. I have done that in the servlet .

[10:49:36 CDT(-0500)] <b-rock> and get the user.

[10:50:15 CDT(-0500)] <b-rock> or rather updated the servlet to use the updated api for the IUserInstance

[10:50:42 CDT(-0500)] <EricDalquist> sounds good

[10:52:17 CDT(-0500)] <b-rock> so in the servlet, the code is trying to get a session attribute that is set as a portlet session attribute in the portlet. I'm not sure how this is working yet.

[10:52:59 CDT(-0500)] <EricDalquist> and the portlet is part of the uPortal webapp?

[10:53:29 CDT(-0500)] <b-rock> no the portlet is its own webapp toro-gateway-portlet.war with its own set of portlets.

[10:54:05 CDT(-0500)] <EricDalquist> then there is no way

[10:54:20 CDT(-0500)] <EricDalquist> one webapp can't see session attributes from another webapp

[10:54:31 CDT(-0500)] <EricDalquist> without seriously unmaintainable trickery

[10:55:41 CDT(-0500)] <b-rock> yeah this is really some interesting code I've got here.

[10:56:39 CDT(-0500)] <EricDalquist> I bet :/

[11:02:55 CDT(-0500)] <athena> http://code.google.com/p/toro-portal/source/browse/trunk/libraries/sso-callback-servlet/src/main/java/net/unicon/academus/apps/sso/SsoCallbackServlet.java

[11:03:33 CDT(-0500)] <athena> it's passing in a key, at which point the servlet either pulls somethign from cache or builds a new one

[11:04:08 CDT(-0500)] <athena> so caching some stuff in the portal's session, but just to save redoing it, and not using the portlet session

[11:04:40 CDT(-0500)] <b-rock> yeah so the evaluator object is the GatewayUserContext object being set in the portlet from what I can tell.

[11:07:55 CDT(-0500)] <athena> don't think it's passing through the session though

[11:10:25 CDT(-0500)] <b-rock> I'm not sure. I see with some added debug that my cache object is empty when the servlet gets called.

[11:13:50 CDT(-0500)] <b-rock> I see.

[11:14:22 CDT(-0500)] <athena> this was all written before we even had spring, so the codebase is pretty old

[11:14:26 CDT(-0500)] <b-rock> the version we're using is already heavily customized with encryption for the password

[11:14:44 CDT(-0500)] <athena> well, not heavily customized

[11:14:53 CDT(-0500)] <athena> i wrote that modification, i believe (smile)

[11:15:03 CDT(-0500)] <b-rock> yes you did.

[11:15:26 CDT(-0500)] <athena> so stuff like that encryption code is more modern and could be pulled into a new project

[11:15:35 CDT(-0500)] <athena> a new project that did the things you need to do would be a lot smaller

[11:16:32 CDT(-0500)] <b-rock> yeah. I'm not sure if it would be easier to just try to write this from scratch or port the existing code to its own project and refactor it as a jsr 268 porlet.

[11:17:10 CDT(-0500)] <athena> it'd be easiest to rewrite from scratch, though pulling in select bits or using them for a model

[11:17:24 CDT(-0500)] <athena> an initial project also maybe wouldn't have to do absolutely everythign the current version does

[11:17:28 CDT(-0500)] <athena> could build it back up slowly

[11:17:36 CDT(-0500)] <b-rock> yeah. I agree.

[11:17:45 CDT(-0500)] <athena> i imagine you're only using a subset of hte functionality

[11:18:31 CDT(-0500)] <b-rock> we really just need the links that sso into the external applications. although that seems like probably the biggest chunk?

[11:19:32 CDT(-0500)] <athena> well, the portlet actually has support for some complex stuff like logging into applications that require a number of sequential steps to authenticate

[11:20:01 CDT(-0500)] <athena> if your SSO targets are just simple links you could skip some of that

[11:20:51 CDT(-0500)] <b-rock> yeah. i think all of the targets just have the basic form based auth that take a user name and passsword which is the same as you use to log into the portal

  • No labels