GWT project doesn't build server side code - java

I'm novice in GWT and trying to build my first GWT application.
I downloaded GWT 2.6.1 and created demo application ('mydemo') using webApplicationCreator.
It works perferct on my developer machine. Then, I want to deploy this application to production server. I installed Apache Tomcat which requires war package. Well, I created war package. But it doesn't contain file mydemo.jar with server-side code (GreetingServiceImpl).
So, I need to configure build.xml to create .jar file with server side of my GWT application. Please, help.

webApplicationCreator's generated Ant file compiles your classes to WEB-INF/classes, it doesn't package them in a JAR.
If you have an error on your "production server", I'd suggest you ask about that error and server.

Related

Using eclipse & tomcat to test a war

I have several web services packaged as a .war file that is build by ant. I would like to test these wars as an Eclipse Dynamic Web Service. All the examples and help I've seen are based on Eclipse building the war file but I've not seen anyone deploy an externally build war file to an Eclipse hosted Tomcat service.
I am aware that you can create a war file from a Eclipse Dynamic Web Service, but since we have multiple developers using multiple IDEs and even multiple platforms the wars need to be created via an IDE agnostic Ant script.
Wars were developed so that a service could be portable. I just want to plug one into the Eclipse Tomcat Web Server to test.
Thank you but I don't want to create the war from Eclipse (export), nor import a war into my eclipse as a project. (I know how to do these and they don't do what I want). I want to deploy a war into a Eclipse/Tomcat service to test.
Thanks for reading this.

How do I export a GWT project into a executable JAR file with Eclipse?

There's a huge legacy codebase that I'm working with and I need to export it into an executable JAR file to make it easier for my co-workers to run it. It's a web application built on top of GWT, but I'm not sure what kind of application server it uses (e.g. Apache Tomcat, Eclipse tells me it uses a "built-in" server).
The run configuration shows up when I try to run the project, but not when I'm trying to export it as an executable JAR. All it does is run an application server on the machine, and allows a user to access it via 127.0.0.1:8888 in a web browser. Any ideas?
Right click on the project.
Google
GWT Compile
Zip the output (I think the war folder) into a war file which can be deployed in tomcat or jetty or something else.
(Creating an executable jar from a GWT project is not possible, you should create a war).
(Make sure to have the eclipse google plugin installed (https://developers.google.com/eclipse/docs/getting_started))

Deploy Java application with Rest web services in Openshift server

I´m trying to deploy java application in OpenShift server. My application is divided in four projects: BBDD, Bussiness, Web Services and Web. When I create the application with openshift, it´s created this structure: src(this one has java, resources and webapp folders), webapps and pom.xml. I don´t know how to organize my projects into that structure to upload to the server.
I have put my web structure on webapp folder inside src. Then, I put the other projects on java folder. When I executed the application I can see my web pages and I can navigate for all of them but, when I call to a webservice I have the following error:
Http/1.1 404 not found
Thanks in advance,
Iban
Openshift is expecting to compile the application on their server using the pom.xml then run the application it built. To do that your project needs to be a maven webapplication project. Only when you have tested it locally would you expect that committing the code to your openshift server (using git) would it be able to compile and run the app successfully.
This means that you should not be uploading files using an SCP upload tool; you should be committing your source using git to your openshift server for it to compile then run your app.
The way I typically work with maven and openshift is to add a fragment of xml into the pom.xml to enable the jetty-maven-plugin to be able to use mvn jetty:run to build and launch the project to test it locally. If-and-only-if it works locally do I try to deploy it. That command is 'zero install' as maven downloads the jetty jars and runs them over your project.
Redhat openshift tends to promote redhat jboss AS application server as a Java solution so if you go down that route you should try mvn packageto make the war file and test it against a local jboss install before expecting it to work on the server. There is an approach where rather than committing code for the server to build and run you can build an EAR file locally and have that pushed to the server.
At the bottom of this answer I have a link to a demo I wrote which shows my preferred approach. I create my apps as a DIY cartridge which is an empty shell then customise the scripts in the .openshift folder to start the Java server of my choice. I use maven to build my webapp which I run using the jetty-maven-plugin to debug locally in Eclipse (maven IDE plugin lets me "debug as... > maven > "jetty:run"). Then I configure the pom.xml to build my whole app plus the jetty Java webserver into one huge runnable jar. Then I edit the start script to use "java -jar" to run my full app.
If you are using a DYI cartridge you don't need to use maven; I have used sbt as the build tool to create a runnable jar. You simply have to modify the scripts in the .openshift folder to download and run the tools you choose.
The demo I made GitHub at the link below has instructions on how to deploy it on openshift. So you may want to get that running then after you can both debug it locally and push it to your openshift server then rip out my code and add in all yours:
https://github.com/simbo1905/zkmongomaps

Deploying to Glassfish via Eclipse

I have set up a project inside Eclipse which I can debug on a Glassfish (3.1) server using the Eclipse Glassfish plugin. So when I click 'Debug on server', it uploads fine and I am able to step through the code correctly etc.
The problem is that I don't know if the program is being compiled/build (to a new .war) each time I press debug. I have got an Ant script in the project (as I previously built the project via terminal) but I'm not sure if it is actually being used in Eclipse.
Is there any way to check if my ant script is being run?
Also, how does Glassfish know what resources to upload? Does it just look for any .war files in the project?
Not sure about this particular jar plugin but as far as I know here is how Eclipse handles web applications:
Eclipse automatically compiles all of the sources in the class path
Then it creates a configuration file which tells Application Server to look for webapp on your project folder and does some mapping based
on your project setup. This will not create a WAR file. Eclipse will
just map WEB-INF/classes to {projectDir}/bin, your classpath jars to
WEB-INF/lib and so on.
When launching the Application Server, eclipse will feed it the config file made above.
Actually answering your question: Eclipse will not use the Ant script you created, nor will it create a WAR of any kind. It will just use project configuration to properly map project folders to web application structure.
Again, this is how eclipse handles things by default, the plugin you're using might do something different. This is based on my experience and is not based on some kind of documentation.

Where does WebSphere put the EAR file when RAD does a "Run On Server"? And how to run createEJBStubs on it?

I have a JavaEE-based web app with IBM RAD 7.5 (Eclipse) and WebSphere 7. The app has EJBs with remote interfaces. It runs fine.
I created a new project for JUnit tests, and I'm trying to do a JNDI lookup of the EJB to test it, but I get the following error:
"ClassCastException: org.omg.stub.java.rmi._Remote_Stub incompatible with com.myapp.UserServiceRemote"
To solve this problem, my understanding is I have to run the WebSphere createEJBStubs command to generate remote stubs, so the JUnit app (which is running as a separate application) can look up the EJB.
My question is:
When I run my app from within WebSphere by rightclicking the myappEAR project and selecting "Run As > Run On Server", where does WebSphere put the EAR file that's being run? That is, what folder is it in?
I ask because my understanding is I'm supposed to run the createEJBStubs command on it, which will generated the stubs and put those stubs in the EAR.
Any advice is greatly appreciated, thanks!
Rob
FYI, I followed the instructions here to create an ANT script to build the EJB jar with the stubs included:
http://www-01.ibm.com/support/docview.wss?uid=swg21393419
To speed up processing, an EAR is not actually built. Instead, the application is configured so that each module or JAR file is loaded from the RAD workspace. I would recommend exporting the EAR (from either RAD or the WAS admin console), and then using createEJBStubs on the result.

Categories

Resources