I'm new to GWT and therefore have a lot of "code and see how it behaves" going on. I'm wondering what are the minimal actions to take to load the modifications in my web browser. For example when I work on the xml I can just refresh my page. So when do I need to perform these and why:
Refresh browser
Reload web server
Re build app
???
1. Refresh browser
You need to do this whenever you've made code changes in UiBinder or any other client side code.
Reload web server
This needs to be done when you've made any changes to the server side classes. This only works if you're using the embedded Jetty in Dev Mode (not if you're using -noserver).
Re build app
You only need to compile the app when you're getting ready to deploy it or you want to show someone. This could also be required if you want to test the app in a browser that doesn't have the GWT plugin.
When running the app in development mode, making code changes in UiBinder or client side code the changes will be visible in the browser after a simple refresh.
But you will not see the error logs in GWT's "development mode" window unless you reload the server. So, by just refreshing the window you might miss some simple mistakes and you app will block with no notifications.
Related
So, I have a Spring-MVC RESTful backend, that is cross-domain enabled. It is unit-tested, I can call my web-services and get back the correct JSON.
I have a SmartGWT 5.1p and GWT 2.7.0 front-end application that works great in SuperDev mode or Classic Dev Mode, either works great. When I do this, I am using the old Firefox 24 browser with the GWT plugin, and I can see my app work just great. My datasources are tied to RESTful web-services, and I can create, retrieve, update, and delete records via my DataSources.
I can compile the whole app via Maven, and get a WAR created just fine. I tried moving this WAR over to a tomcat server, and it deploys correctly. I can see the app running in tomcat with no errors in the logs.
Then when I go to the first page, the app comes up s normal with no errors. The first thing I do is add a username and password into a form, and then it is supposed to call a LoginDataSource which is tied into a LoginCOntroller, or login web-service.
What I can see from firebug is that when I make my call, rather than just calling:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword
I get:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword?0{and a whole lotta stuff after this) ... the query string I presume.
When I hit the Submit button, I get a SERVER TRANSPORT error, and that's it, I don't get any more information that that. There is nothing else to report from firebug except that the OPTIONS and GET add a whole lot of query string nonsense after the password.
I can look in the tomcat logs, and I don't see any errors in there at all. I don't even see the URL call to the web-service.
Any help on this would be much appreciated. I've been dealing with SmartGWT for years, and switched to back-end development for a while, and not I am trying to make my SmartGWT front-end work as well. But, I am a little rusty as to what is happening now.
Thanks!
The problem is not the querystring, it's the old base url I have in the datasource. There is a method in each datasource called: getServiceRoot
In getServiceRoot, I was using a hardcoded "localhost:8080", which in client code that doesn't work. That means whoever is running the app in their browser, "localhost" means their machine. So, I had to change the getServiceRoot to do the following:
protected String getServiceRoot()
{
String baseUrl = "http://" + Window.Location.getHostName();
return baseUrl + UrlConstants.SOME_URL_REST_ENDPOINT;
}
Since I have two WAR's on the same machine;
one WAR is a Spring MVC back-end RESTful web-services
the other WAR is the front-end, SmartGWT client application
This is a problem I run into ... I think just because both are on the same machine, that to the front-end, just call the code on the localhost, because it is there. But to the browser, that could be any other machine.
I suppose I could have just hard-coded the public IP address of the machine running tomcat, and then the client-side SmartGWT would then certainly find the RESTful web-services. Or, I could have used a Spring Env Profile to make that happen as well. But the code change I made should work, provided both WARS are on the same machine.
I just got to remember that client-side code in a browser is relevant to the machine the browser is running on.
So, this is fixed. If anyone needs any clarification, please let me know.
My webstart runs fine whenever there is internet connection. It also runs fine when I disconnect from wifi. But it does not work if my computer is connected to public wifi (ie. coffeeshop, airport, etc) such that if I open a browser it forwards me to a html page that asks me to click on a button to connect to internet.
Basically Java webstart thinks that the html welcome page is the new update to my jnlp file so it replaces my jnlp with the welcome page html. Of course that will fail to parse, so I get a parse error and I cannot recover from it unless I completely remove my webstart application from cache and re-download and re-install it.
Has anyone else experienced this? Is there a way to prevent this issue?
I submitted a bug report to OpenJDK:
https://bugs.openjdk.java.net/browse/JDK-8079874
Unfortunately it's marked as incomplete. Evidently I wasn't clear about what the problem is. I'll try to get in touch with them to see which part is not clear.
I am still a beginner in GWT . Firstly I write a sample project and run it . And open with browser giving url by Development Mode of my Eclipse IDE. At this time , I noticed that my browser was stopped just a few seconds and I can't do anythings on my browser . If I have some other pages are loading to open , they also stop loading . I think in this time browsers will download JavaScript files these need to show my page. That is worse thing for me .
By using RPC , I retrieve many datas from my database and try to render to my view page. That may also happen stop for a moment to my browser. So , I had add a Gif image in my web-page and press some button to retrieve data and try to render my view page. Supprisingly , this Gif image also stop animation. Why has this situation happend with GWT project ?
I am testing it in localhost. Can I avoid it ? Any suggestions ? Thanks...
Development mode (localhost) is very different from the production mode. It is many times slower, and it requires a lot of memory. This is why your browser freezes. You can:
Try a different browser. You may have a better performance on your system.
Add memory to your computer.
Optimize your code. There are many ways to do it. As a first step you need to understand what causes a problem: processing data or rendering of a page.
Finally, deploy your code to the production environment and check if you experience the same problems.
I have big web application that uses GWT. When it starts a dialog window is openning on client side for logging. LogDialog consists of two textfields (password and name). Why when I use option Run on Server from Eclipse I can see only loading picture(it appears from beginnig). But then the LogDialog and main menu dont appear. As I know there is one jscript that Browser have to load to show Logdialog. I tried to view web app from GooGle Chrome and I discovered that it doesnt load Cashier.js (jscript file) and shows to me loading picture. What am I doing wrong? How can I catch the error?
As I know GWT compiler generate the client side Javascript code. The web app uses database for storing logname and pass.
So, this is a pretty trivial thing to accomplish apparently, but for some reason it just will not work for me. I created a VERY SIMPLE GWT app. It uses UIBinder just to display a label and a button, no actual processing or handling takes place. I did this to test deploying the app using strictly JS and html that is not hosted by Eclipse and Jetty or whatever.
I compile my app, run it in eclipse, and it works fine. However, when I try to run the html page directly from the WAR directory, it does not work.
Do I need this running on a webserver for it to work? It is just html and js, so I shouldn't? I've been to the GWT site about deploying, and surfed quite a few forums. They seem to always mention the necessity of a server, but it seems like it should not be necessary?
Since it is a pure JavaScript and HTML it should work properly without server. Checkout this link: Compile and run in Production Mode with Eclipse
In your EntryPoint class, in onModuleLoad() there's a RootPanel.get("someDivId") call somewhere. Make sure your html page (=the host page) contains a div with that id.
Also make sure your host page calls the right java script file. It's easy to forget to edit the host page after you renamed your GWT module (see rename-to in your .gwt.xml), as the generated JavaScript file matches your module name.
This will work locally on all browsers except Chrome for security reasons.
See http://code.google.com/p/chromium/issues/detail?id=31068
and http://code.google.com/p/chromium/issues/detail?id=70088