irods-cloud-browser backend

135 views
Skip to first unread message

Dustin Machi

unread,
Feb 28, 2016, 11:49:20 AM2/28/16
to iRODS-Chat
Hi All,

I'm having problems getting irods-cloud-browser configured and working. I have the backend running on jetty9. I can make requests to its /irods-cloud-backend endpoint, though everything returns with a jetty error as "not found" (so I can confirm that the requests are getting to Jetty. For the frontend, I have nginx configured to server the main application at / and have proxied /irods-cloud-backend in on the same host/port to avoid any CORs issues.

I have verified that the requests to th is proxied endpoint are getting through to Jetty (I'm getting the Jetty not found error message there too). I've configured the globals on the frontend to use "/irods-cloud-backend/" for its requests. Web inspector shows that the url is correct and I can see the requests make it to jetty.

http://SERVER/irods-cloud-backend/virtualCollection/My%20Home

which gets the response:

HTTP ERROR: 404
Problem accessing /irods-cloud-backend/virtualCollection/My%20Home. Reason:
Not Found
Powered by Jetty:// 9.3.7.v20160115

I'm not sure what to change to get this working.

I added a file on my server at /etc/irods-cloud-backend-config.groovy that looks like:

// use login preset
beconf.login.preset.host='ICAT_SERVER'
beconf.login.preset.port=1247
beconf.login.preset.zone='nddsl'
beconf.login.preset.auth.type='STANDARD'
beconf.login.preset.enabled=true

However, I don't know how to confirm if this is being read/consumed by the backend code.

Any ideas on what I am doing wrong and/or what I should look at to debug?

Thanks,
Dustin

Dhd Koha (grharry)

unread,
Feb 28, 2016, 2:29:56 PM2/28/16
to irod...@googlegroups.com
Hi Dustin,

I am also a newbe ...

Just check that the VAR HOST = "..... " entry in file

irods-cloud-frontend/app/components/config.js

points to an externally accessible ip address ... not just localhost

in my case:
.....
var HOST = "http://192.168.0.179/irods-cloud-backend/";
....
Cheers
Harry

Dustin Machi

unread,
Feb 28, 2016, 11:07:34 PM2/28/16
to iRODS-Chat
It does, it is set to "/irods-cloud-backend/" (so on the same host/port as the frontend) and I can see that the browser is sending the req to that host/path. The backend piece doesn't seem to be in touch with the actual irods zone/catalog though.  Thanks though!

Tom Langborg

unread,
Feb 29, 2016, 7:02:49 AM2/29/16
to iRODS-Chat
Hi

It still looks like the same problem as I had.
Posted 16 Feb.
Frontend and backend is not communicate.

Micke give som advice 
My solution was to upgrade to tomcat 7 and redo the installation. 

regards
tom

Mike Conway

unread,
Feb 29, 2016, 7:53:52 AM2/29/16
to iRODS-Chat


The split between front end and back end is sort of confusing.  It's an unfortunate artifact of how the development and build process was configured at the start, and we've had to keep pushing back the correction for this inconvenient arrangement (by finally getting the Gulp test and package automation in place).  That is next on the roadmap after this coming release.  Once that is done everything will be located in the same back-end endpoint and this will be less of an issue.

That being said, the way it currently works is that the 'front end' code is a static set of html, images, and the like, and is meant to be deployed on any Apache or Nginx front end server as a set of directories.  The front end javascript code uses Ajax to communicate with a back end running on a container such as Tomcat or Jetty.  The front end needs to know where the back end is, hence the configuration of the /app/components/config.js.  That backend URL should resolve to the Tomcat or Jetty container, and reflect the host and port of that backend.  Tomcat is typically 8080 or 8443, I'm not sure the setting for your Jetty container.

Once configured in the config.js, be sure the reload the browser and clear any cached, and it should be fine.  If not the issues invariably seem to be:

  • Incorrect host or port
  • IPTables or other restriction on the back end
  • Cached JavaScript retaining an incorrect config.js reference.

MC







On 02/28/2016 11:07 PM, Dustin Machi wrote:
It does, it is set to "/irods-cloud-backend/" (so on the same host/port as the frontend) and I can see that the browser is sending the req to that host/path. The backend piece doesn't seem to be in touch with the actual irods zone/catalog though.  Thanks though!

On Sunday, February 28, 2016 at 2:29:56 PM UTC-5, DHD Grp wrote:
Hi Dustin,

I am also a newbe ...

--
--
"iRODS: the Integrated Rule-Oriented Data-management System; A community driven, open source, data grid software solution" https://www.irods.org
 
iROD-Chat: http://groups.google.com/group/iROD-Chat

---
You received this message because you are subscribed to the Google Groups "iRODS-Chat" group.
To unsubscribe from this group and stop receiving emails from it, send an email to irod-chat+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



Dustin Machi

unread,
Feb 29, 2016, 9:14:04 AM2/29/16
to iRODS-Chat
Thanks Mike.  I will play with it some more and see if I can figure out why it isn't working.  I believe my configuration is generally correct in terms of host, port, and iptables  because I can see the browser make the request, I can see the request come through on the jetty (backend) side, and the 404 error being returned is being returned from Jetty (the jetty version can be seen in the html response).   I'll change my config.js to point directly at the jetty container (instead of being proxied via nginx) and see if it helps.

Dan Bedard

unread,
Feb 29, 2016, 9:24:38 AM2/29/16
to irod...@googlegroups.com
Hi Dustin,

I'm quite convinced that the problem is a jetty configuration issue. Admittedly, I am not familiar with jetty. I have tried to configure cloud browser with jetty and so far have ended up with exactly your issue: 404, nothing found, and jetty is not expanding the war file. I think something needs to be done to tell jetty to expose that context...

With a working configuration, you should see one of the attached screens. The one with login and password only is what you should see if the /etc/irods-cloud-backend-config.groovy file is picked up. Otherwise, you should see the screen with all the other irods prompts.

If I have some time today, I will try again to get jetty to pick up the .war file. If anyone figures it out first, please post!

Cheers,
Dan



Dustin Machi

unread,
Feb 29, 2016, 9:43:12 AM2/29/16
to iRODS-Chat
It could definitely be a Jetty config issue, though I can verify that the .war is being picked up.  Note that Jetty doesn't expand the war in place, it just gets expanded in a temporary location.  I can also tell that the war is being picked up because if I go to SERVER:8080/  the page lists the url to the /irods-cloud-backend/ context.   I can throw tomcat7 on that box this afternoon too see how that goes.

Thanks,
Dustin

Dustin Machi

unread,
Feb 29, 2016, 11:42:03 AM2/29/16
to iRODS-Chat
I was eventually able to get past this using tomcat7.  As reported previously, it isn't working with tomcat6, which throws the following error:

java.lang.ClassNotFoundException: javax.servlet.AsyncContext

at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)

at java.lang.Class.privateGetPublicMethods(Class.java:2743)

at java.lang.Class.getMethods(Class.java:1480)

at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1280)

at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1141)

at java.beans.Introspector.getBeanInfo(Introspector.java:416)

at java.beans.Introspector.getBeanInfo(Introspector.java:163)

at org.irods.jargon.idrop.web.controllers.FileController.<clinit>(FileController.groovy:26)

at java.lang.Class.forName(Class.java:278)


I'm not sure why it isn't working with Jetty.
Reply all
Reply to author
Forward
0 new messages