It looks like you are leaving the work of the actual copy to WTP's PublishUtil class.
My understand of how this works inside WTP is that it does a file copy of each file to the
directory $HOME/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp12345.class
and then does a rename to the final deployment location (which WTP is expecting to be in a
directory like $HOME/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/
If you check your directory
$HOME/workspace/.metadata/.plugins/org.eclipse.wst.server.core/ both before and after your
a publish with JBossTools-AS where your runtime is on another file system you should see
left over files appear and the number of files in the directory grow. It does not seem
WTP deletes the old temporary after the renameTo() failed.
This works great for Tomcat and other such containers that can treat the "tmp1"
directory above as a deployment directory but not do useful if the runtime it somewhere
else.
Since all the built in WTP runtime tools I have seen use the "tmp1/" directory
in the workspace area as the deployment area you can't expect these tools to work for
deployment outside of the workspace area.
My suggestion would be for JBoss to open up an API request with the server tooling to
allow the PublishUtil tool to be instanced and configured an exact path to be used as the
temporary location to copy to.
File tmpDir = new File("/opt/jboss-4.2.1.GA/server/default/tmp/jbosside-as");
| if(!tmpDir.getParent().exist() == false)
| throw new RuntimeException("Directory " +
tmpDir.getParent().getAbsolutePath() + " does not exist");
| tmpDir.mkdirs();
| PublishUtil publishUtilInstance = new PublishUtil(tmpDir);
|
| // Then in your code instead of using the static methods use the instanced ones
| publishUtilInstance.callSomeMethod(someArgs);
|
So it looks like to me you need a way to pass down a temporary path that WTP standard
methods can use as the temporary directory to perform the initial copy from the
"project build area". This is runtime specific. Its also concerning that the
rename must have failed and that no error is indicated in the UI so there is another area
to look at in that.
What does this idiom "copied = copied &&" do ?
http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosstools/trunk/as/plugins/or...
|
| #fileSafeCopy(File src, File dest, IFileUtilListener listener) {
| copied = copied && fileSafeCopy(subFiles, newDest, listener);
| }
|
| // I would think that propagation of an error would but more correct here :
|
| if(fileSafeCopy(subFiles, newDest, listener) == false) {
| copied = false;
| }
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4093910#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...