Running PlayN in HTML DevMode - eclipse

I'd like to be able to run my PlayN project as a Web Application in DevMode, so that I can use a quick browser refresh to see code changes without having to recompile. From what I'm reading on the wiki and on this question it sounds like that should be possible.
I set up my project using: mvn archetype:generate -DarchetypeGroupId=com.googlecode.playn -DarchetypeArtifactId=playn-archetype -DarchetypeVersion=1.7 and importing the pom.xml into eclipse.
Here's what I can do:
Run from eclipse as a Java Application
Start the server using Maven command line: mvn -Phtml integration-test
While I can do most of my programming in Java and occasionally do the long build to test HTML, I'd love to be able to modify the code while testing HTML without recompiling.
By default, the option to run as a Web Application doesn't show up. I've tried going into the project's properties and checking the "Use Google App Engine" and "Use Google Web Toolkit" options, which creates the "Run As Web Application" option, but when I do so I get "Could not find any host pages in project XXX".
I then attempt to set a WAR directory under Properties->Google-Web Application. However, the closest thing to a WAR in the project is "src/main/webapp". I've tried using that, and I get the error: "The archive: /myproject-assets/src/main/java which is referenced by the classpath, does not exist."
I have the feeling I'm going about this all wrong. Can anyone point me in the right direction? Is what I'm doing even supposed to be possible? Thanks!

It is possible, but just know that in dev mode, playn runs very slow.
I don't know how to do this with eclipse, but with intelli IDEA, you do the following:
you need to create a module with a war artifact (to run as a server)
add the correct gwt libraries so that you can run gwt dev mode server with the aforementioned war module.
choose a GAE server (or, any gwt compatible server actually, this will be the server that runs the aformentioned war module).
run it! see this screenshot http://screencast.com/t/qK4JKvF33V
when you change code, the gwt devmode server should detect it, and automatically recompile (not sure if this needs to be in debug mode - i don't think it does).
you can try doing it via the command line, not sure if works, but this is what intellij runs (i've taken out the intellij specific bits out):
java -cp CLASSPATH_WITH_GAE_DEV_TOOLS_AND_GWT_DEV_TOOLS com.google.gwt.dev.DevMode
-war /path/to/war
-startupUrl Roborally.html com.yourgame.YourGwtEntryModule
-server com.google.appengine.tools.development.gwt.AppEngineLauncher

Related

Eclipse's Tomcat gives a 404 while the WAR file works-previous solutions don't work

So when I'm running my project through Eclipse's "Run on server" the 'server' doesn't work (when trying the URI http://localhost:8080/simpleapp/ there is an automated 404 Tomcat's webpage), but when compiling and deploying the WAR file through Tomcat's app manager it works fine (the exact same URI gives the response I expected).
How can I systematically solve the issue?
It's important for me to solve it since debugging is a living hell this way right now (can't do a step-by-step debugging,every time that I want to check something I have to re-deploy my project :( ).
I've looked for hours for a solution so I've tried lots of different settings, and the proposed solutions don't work here.
Specifically,when changing the server's configuration in Eclipse to 'use tomcat installation', it doesnt work through eclipse (and the WAR file cannot be undeployed and doesn't work either!),switch location doesn't work either...
More details which are optional but might help:
I have another project where the server through Eclipse does function, I've just used a different Maven archetype this time. When Eclipse's server 'worked' I used jersey-quick start-web app but this time I had to use (org.glassfish.jersey.archetypes:jersey-heroku-webapp (An archetype which contains a quick start Jersey-based web application project capable to run on Heroku)) and added dynamic web module through project facets and as I said now the Eclipse server doesn't work (oh and I've tried to delete the server and reset the configuration too, but no luck).
Try to deploy your WAR using "Add and Remove" from the Servers view instead of using "Run on Server". If the WAR doesn't appear check the Project Facets and ensure that Dynamic Web module is enabled.

Java EE EAR debugging with source tree

I've recently been assigned to work on a Java project. I don't have a lot of experience with this kind of development, so I'm kind of struggling.
The typical development process for this project is:
Make changes in source code
Run ant build script to create EAR
Deploy EAR to development server (Weblogic 12.1.2)
Run application and see if the changes you've made fix the issue you're working on.
So, I am taking it as my personal goal to make it possible to do local development, so debugging will actually work and such.
After spending time googling and playing around, I'm able to get at least part of the way, but am having trouble towards the end of the process.
I've tried some different methods to try to get things working.
First, I checked out the source code via Eclipse, so it shows up as a Project and is correctly linked to subversion. I can bring the build.xml file into the Ant view and build the target I'm interested in. This gives me a EAR file (and a WAR file). But when I try to debug the project, via the right-click on the project and selecting Debug As... I get three options: Java Applet, Java Application, JUnit Test.
If I choose Java Applet, I then get a Select Java Applet popup. After choosing what I think is the right applet I get Errors exist in required project(s), Proceed with launch? If I proceed, I get an Applet Viewer and a bajillion errors and nothing else. If I don't proceed, then the Error log fills up with a bajillion other errors.
If I choose Java Application I get a list of a bunch of different entries, none of which is what I'm trying to debug.
So, after trying all that, I decided to see if I could just import the generated EAR file and debug that way. So, I went through the Import wizard, found the EAR file that I build via Ant. After selecting that and proceeding through the dialog, I get two projects in my Project Explorer: the application (we'll call it AppX) and the AppX_WEB project.
Now, if I select the AppX project and choose Debug As, I get Debug On Server, which is promising. The Console tells me that the server is listening on 127.0.0.1:7001, and the built-in browser actually starts bringing up the page. So I'm feeling pretty good about all that.
The problem is, though, I don't know how to attach that EAR file to the source tree that I've got already so I can actually step through the code.
And going deeper, how do I set it up so that I can develop in my source tree and have them automatically propagated into the EAR file and redeployed?
Or, even better, can I get this working without having to build the EAR file and deploy it? Meaning, can I just run straight from the source tree?
Anyway, any help you can give will be much appreciated.
Thanks!
You can start your server in debug mode then attach eclipse to the running instance and debug it.
For this enable debug port in jvm configurations on your server and launch remote application debugging in eclipse.

Running GWT application in production mode

I am newbie to GWT. I have built gwt maven project. To run in development mode, I first compiled project Google|Compile Project, then from command mvn gwt:run, it runs fine on
http://localhost:8888/index.html?gwt.codesvr=127.0.0.1:9997
but for production I want to access module
http://localhost:8888/index.html
When I omit gwt.codesvr= argument, I am getting error "gwt module may need to be recompiled". After Recompiling, I get the same error. Any help/pointer?
Thanks,
i run gwt project on tomcat on production mode. Jetty cant show it. Try to tun with external web module. When you are look at the IDE console title show us 'Development Mode'. Tyr with external , in any exception i can help.
You did it correctly, but as the error states, the module needs to be re-compiled (GWT Compiled). Once recompiled, Force your browser to reload (Ctrl + F5). If that doesn't work, you can look at this answer I wrote regarding cleanup of compiled output. Do what's listed there, and try running GWT compile again.
To run production mode outside Eclipse, you must do a GWT compile and create a WAR file, which you can then deploy on a Java application server such as Tomcat. This process is much easier with an ant build script.
To make an ant build script for your project:
You can easily create an ant build script by running the webAppCreator command from the directory where the GWT library is installed. That command will create a sample project just like clicking "New Web Application Project" in Eclipse, except it will also make a build.xml file.
You can run it in Eclipse by right clicking build.xml > Run As... > Ant build. By default it will run the build target. It also has a war target, which you can run to create a WAR file.
For more details on the webAppCreator, look here.

PlayN GWT/HTML, keeps insisting module must be (re)compiled

I created a new PlayN project from the 1.2 archetype using the command line given in the GettingStarted wiki page. I then imported this Maven Project into Eclipse, just bringing in the core, java, and html modules. If I right-click the Java project, I can choose my main class, and a window pops up with the background image shown. Note that I've done no real programming yet: I'm just using the default project configuration.
Next, I used GWT-compile through Eclipse on the HTML project, and I got no errors. When I run it as a Web application by using the provided URL (without removing the "?gwt.codesvr=127.0.0.1:9997" bit), the application runs fine aside the Eclipse Console gives a warning about being in Development Mode. (Specifically, "You are running in GWT Development Mode. For optimal performance you may want to use an alternative method.")
However, if I run the application the recommended way, by removing the gwt.codesvr parameter, then I keep getting a dialog box saying "GWT module 'testproject' may need to be (re)compiled."
After reading How do I run a maven/eclipse/GWT/playN app in production mode?, I tried doing mvn test -Ptest-html
and then pointing my browser at http://localhost:8080, but it gives the same error.
Am I doing something wrong?
(EDIT: I have no idea if this next point is significant or not, but I'll share it anyway. When I try to create a project from Eclipse, the newest PlayN archetype I can see is 1.0.3, even after telling Eclipse to update the Maven index. I'm running Eclipse Indigo.)
I guess you are running PlayN 1.0.3.
There is a bug in 1.0.3:
So you need to do the following:
Run GWT-Compile
Run the web application and get the error message: "GWT module 'testproject' may need to be (re)compiled."
Run again GWT-compile, while the Web-Application is running
Reload your browser with CTRL-F5
The important step is step 3.
Note:
You can update to PlayN 1.2 to get rid of the error. For this you have to change the file playn-showcase/pom.xml.
Change the line
<version>1.0.3</version>
to
<version>1.2</version>

PlayN Maven Archetype and Running HTML5 in Eclipse

I generated a skeleton PlayN project from the playn-archetype and imported into Eclipse via m2e after verifying a successful build via
mvn clean package
After using the Google Plugin for Eclipse to successfully compile the html subproject, I then right click on the html subproject and perform a Run As -> Web Application.... Per the 'Getting Started' instructions on the PlayN wiki, I attempt to load the resulting Development Mode URL minus the ?gwt.codesvr=120.0.0.1:9997 suffix and am greeted with a dialog containing the following:
GWT module named 'project' may need to be (re)compiled.
I have verified that the <script> tag in my project.html is pointing to the appropriate javascript file (project/project.nocache.js), and I've verified that said javascript file exists and its contents browsed when navigating directly to it (i.e. http://127.0.0.1:8888/project/project.nocache.js).
The project works fine (albeit slowly) when the ?gwt.codesvr=120.0.0.1:9997 suffix is part of the URL (which is expected), and it also works fine when running mvn gae:run from the html subproject folder and browsing to http://127.0.0.1:8080/.
This is more of an annoyance than anything else, but I would at least like to know why it's happening and how to fix it :).
After you started the web application with "Run as... Web application" you need to recompile the project again (while the web application is running).
When you refresh your browser (be aware of the browser-cache) it should work.
This is a known issue is some older versions of PlayN.