I have a Java GWT-Spring-JPA project that I am developing in Eclipse with the OEPE plugin. When my server(Weblogic is running), if I compile the code, and reload my webpage without restarting the server, I get a strange error message, and I have to restart Weblogic for it work.
At one particular point in the code, I get a ClassCast exception to the effect Cannot cast class A to class A !!
Sometimes I get an error during the compile to the effect - Error compiling because jndi.properties file could not be deleted. Anyone seen this?
These errors are really slowing me down! Does anyone have any solutions please?
Any input much appreciated.
You should use development mode as you are already and do a exploded deployment from your app diring development in the default auto-deploy directory in your weblogic domain, in the link below you will find general guidance on it.
http://download.oracle.com/docs/cd/E21764_01/web.1111/e13706/toc.htm
If you are using Ant you may use the wldeploy ant task for that:
http://download.oracle.com/docs/cd/E21764_01/web.1111/e13706/splitcreate.htm#WLPRG182
Well with this environment configured you wont need to restart when you have a static or a page updated it will do it automatically and if you need to force a general classloading update you could have a REDEPLOY file in your split directory(META-INF if using .ear or WEB-INF if using .war) that whenever you do a touch(change it) on it, weblogic will restart your app context WITHOUT restarting the server, updating the class loader for your app and possibly solving your problem.
regards.
Related
I am interested in setting up a development environment for ATG in which changes on class will take effect immediately after the build is done, without restarting server and building again the ear file.
I have searched in the product documentation but the only thing I saw you can configure to load dynamically would be the configuration files section.
Is there any other way of configuring the environment for better productivity?
Use JRebel. That will do dynamic re-loading for java classes, property files and other deployable assets. Great for productivity.
If your purpose is to debug and most of time is getting wasted packing and unpacking the ear, you can always use remote debugging with JBoss and Eclipse, but for major changes like adding a method wont be working in that case. One solution to this is use Java DCEVM which will dynamically update code in the JVM. Its a simple jdk just point your Java_home to this jdk and in debug mode you can add code to you class see changes. Use the below link for more information about DCEVM
https://github.com/dcevm/dcevm
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.
If I run my application (Play 2.3.2) while Eclipse is running I always have strange compilation errors, no class def found errors, class not found errors, etc...
If I exit Eclipse and run my application, everything is working fine. But sometimes it's also working fine while Eclipse is running.
Am I the only one to experience that ? What is the cause ?
I suspect something in Eclipse changes my source files but I can't find what.
Maybe Lombok ?
Thanks.
I have similar problems. Typesafe responded with a solution which I am currently trying out.
https://groups.google.com/forum/#!topic/play-framework/4RnbqEk-muM
Brief summary of the answer by #jroper :
Eclipse doesn't know
how to keep its dirty hands off the same build directory that Play is
using to compile your app - if you have both Play, and the IDE, trying
to compile the same code at the same time, what do you think will
happen? You will see random errors. You should configure Eclipse not
to automatically build your app, or configure it to have different
output directories.
The Play Framework compiles everything to the directory target/scala-2.11/classes. When changing some of these classes, especially any views, causes Activator to auto compile the classes creating new class files. Hitting refresh on the project in Eclipse will update the project and class files in the classes directory causing a rebuild. This should make your compilation errors go away. If you still have issues, take a look at your .classpath file and the Eclipse build path settings.
I am using Eclipse 4.2 and JBoss 7.
I have Build automatically checked in Eclipse.
Even then I have to build and redeploy the EAR file to JBOSS to test any code changes I make in Eclipse debug mode.
Am I missing something here?
THanks,
What the "Build automatically" option in eclipse do is that when you modify the source code of a class, this one will be automatically compiled, which doesn't mean that all the whole project that contains the class (i.e. war, jar, ear ...) is redeployed in the server. But of course it helps in the speed of deployment, because the classes you've been modifying are already compiled when you manually build or deploy the project.
On the other hand, to avoid problems with redeployments, you'd better set up JBoss to delete the files related to the application keeps in the work directory, when the application is undeployed / redeployed. Look at this stackoverflow thread for more information.
Concerning the "Build automatically" option:
In order for the Deployment Scanner in JBoss to work, you have to have it turned on in JBoss.
Also, you need to add your project to the JBoss server in the Servers window. Look for the "Add or Remove..." option.
Once your project is added, any changes you make to your code will get detected and your module will be redeployed automatically in the background. Failing that and assuming your project doesn't have a snag, you can use mvn install & mvn jboss-as:deploy to manual update your module.
Beware, sometimes mvn doesn't pick up the latest java code. This seems to be a project configuration issue more than anything. Re-creating the project seems to correct the issue.
Also, keep an eye out for duplicate persistence.xml files.
You only need one.
Eclipse Indigo
Version: Indigo Service Release 1
Build id: 20110916-0149
JBoss 6.1.Final
I have a server which i have configured with some support, but it has broken down.
Broken down means, even tough i;
- stop the server,
- clean and build projects in workspace,
- and clean the server and publish from scratch,
- and start the server again
it responds like it has yesterday's code. I made lots of change but server seems not to be aware of changes.
If you have an advise on this issue, please provide.
Thanks
Try autodeploying your .war or .ear file manually, not using the Eclipse JBoss connector (which sometimes breaks down and acts strangely). Just copy the file to the autodeploy dir (for JBoss 6 i believe this is /server/default/deploy), check the JBoss's logs/console to see that your file is currently deployed, then delete it from there, and again check that the JBoss console confirms succesfully undeploying that application.
Now, that Eclipse JBoss connector is convenient because it lets you quickly deploy, debug, etc (even tho it has it's bugs). You can however to several things to simulate it's behavious without actually using it:
simplest one: Use Jetty: http://irc.codehaus.org/display/JETTY/Downloading+Jetty. Comes as Eclipse plugn, maven plugin, stand alone server. Jetty 8 supports servlet 3.0 so it's up to date. Deploying and debugging is fast and easy and it actually works (I use this a lot). Only downer: doesn't have EJB container.
Use tomcat 7 (stand alone install) and the Eclipse sysdeo plugin: http://www.eclipsetotale.com/tomcatPlugin.html. Allows for seamless deployment/debugging as you'd do with a Java SE application inside Eclipse. Again, the downer is no EJB container
If you really wanna use JBoss, try the following:
start in in debug mode all the time by adding this to your run.bat:
set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n %JAVA_OPTS%
make your "target" project folder (the one where either Eclipse or Maven (whichever you use)) to be something like [jboss root]\server\default\deploy\myAppName
Start a "Remote Java application" debug session from Eclipse on the port 8787.
With all this the project should deploy any changes you make on the fly, and stop at whatever breakpoints you have when execution reaches them. It's not awesome, as sometimes certain changes will not be taken into account (eg: if you modify the body of a method in a Java class it will be hot-deployed. If you add a new method it will not).