One thing to note is the <zip> element must have an xmlns of
http://www.apache.org/ode/deployapi. I also find it helpful to include a
MIME type, like so (code in PHP):

$zipFile = '/tmp/deploy.zip';

$odeDeployNsUri = 'http://www.apache.org/ode/deployapi';
$mimeNsUri = 'http://www.w3.org/2005/05/xmlmime';

$zipElement = sprintf(
    '<zip' .
    ' xmlns="%s"' .
    ' xmlns:mime="%s"' .
    ' mime:contentType="application/zip"' .
    '>%s</zip>',
    $odeDeployNsUri,
    $mimeNsUri,
    base64_encode(
        file_get_contents($zipFile)
    )
);

I hope this helps.

On 1 February 2015 at 09:02, Marzie Dehghanipour <[email protected]>
wrote:

> Hi,
> Yes I checked it. I also have implemented some codes that use the
> deployment service but it has exception and I worked the whole week but I
> could not solve the problem.
>
> I have basically two classes: deploymentconnection.java
>
> import java.io.ByteArrayOutputStream;
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.FileNotFoundException;
> import java.io.IOException;
> import java.io.InputStream;
>
> import org.apache.axiom.om.OMAbstractFactory;
> import org.apache.axiom.om.OMElement;
> import org.apache.axiom.om.OMFactory;
> import org.apache.axiom.om.OMNamespace;
> import org.apache.axiom.om.OMText;
> import org.apache.axiom.om.util.Base64;
> import org.apache.axis2.AxisFault;
> import org.apache.ode.axis2.service.ServiceClientUtil;
> import org.apache.ode.utils.Namespaces;
>
> public class DeploymentConnection {
>     private final String _url;
>     private OMFactory _factory;
>     private ServiceClientUtil _client;
>     private final OMNamespace _pmapi;
>
>     public DeploymentConnection(String url) {
>         _url = url;
>         _factory = OMAbstractFactory.getOMFactory();
>         _client = new ServiceClientUtil();
>         _pmapi = _factory.createOMNamespace("
> http://www.apache.org/ode/pmapi";,
> "pmapi");
>     }
>
>     public void deploy(File archive, String name) throws
> FileNotFoundException, IOException {
>
>     // Use the factory to create three elements
>         OMElement root = _factory.createOMElement("deploy", _pmapi);
>         OMElement namePart = _factory.createOMElement("name", null);
>         namePart.setText(name);
>         OMElement zipPart = _factory.createOMElement("package", null);
>         OMElement zipElmt = _factory.createOMElement("zip", null);
>
>         InputStream is = new FileInputStream(archive.getPath());
>         ByteArrayOutputStream outputStream = new
> ByteArrayOutputStream((int) archive.length());
>         byte[] buffer = new byte[4096];
>         int len;
>         while ((len = is.read(buffer)) >= 0) {
>             outputStream.write(buffer, 0, len);
>         }
>
>         String base64Enc = Base64.encode(outputStream.toByteArray());
>         OMText zipContent =
> _factory.createOMText(base64Enc,"application/zip", true);
>         root.addChild(namePart);
>         root.addChild(zipPart);
>         zipPart.addChild(zipElmt);
>         zipElmt.addChild(zipContent);
>
>         sendToDeployment(root);
>     }
>
>     public void undeploy(String packageName) throws IOException {
>         // Prepare undeploy message
>         OMNamespace pmapi =
> _factory.createOMNamespace(Namespaces.ODE_PMAPI,"deployapi");
>         OMElement root = _factory.createOMElement("undeploy", pmapi);
>         OMElement part = _factory.createOMElement("packageName", null);
>         part.setText(packageName);
>         root.addChild(part);
>
>         if (packageName != null) {
>             part.setText(packageName);
>             root.addChild(part);
>             sendToDeployment(root);
>         }
>     }
>
>     private OMElement sendToDeployment(OMElement msg) throws AxisFault {
>         return _client.send(msg, this._url);
>     }
>
> }
>
>
> and my main class which uses ServiceClientUtil class for sending the
> message to Axis2 for calling the deploy function. ServiceClientUtil is the
> class which I found it on Github and this is an interface for making it
> easier to use the API : main.java
>
>
> import java.io.File;
> import java.io.FileNotFoundException;
> import java.io.IOException;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
> public class Main {
>     public static void main(String[] args) throws FileNotFoundException {
>         DeploymentConnection con = new DeploymentConnection("
> http://localhost:8080/ode/processes/DeploymentService";);
>         try {
>             con.deploy(new File("C:\\temp\\DynPartner.zip"), "DynPartner");
>         } catch (IOException ex) {
>             //Logger.getLogger(Main.class.getName()).log(Level.SEVERE,
> null,ex);
>         ex.printStackTrace();
>         }}}
>
> I do appreciate if someone can help me. It makes me crazy and I was working
> the last 2 weeks on it.
>
> On Sun, Feb 1, 2015 at 4:15 AM, Sathwik B P <[email protected]> wrote:
>
> > Did you check fileupload.jsp
> >
> > On Sat, Jan 31, 2015 at 8:19 PM, Marzie Dehghanipour <
> > [email protected]> wrote:
> >
> > > Dear Sathwik,
> > >
> > > Thanks a lot for your answer. I know already the concept. but I need
> some
> > > implementation sample.
> > >
> > > Thanks
> > >
> > > On Sat, Jan 31, 2015 at 2:29 PM, Sathwik B P <[email protected]>
> > wrote:
> > >
> > > > Hi Marzie,
> > > >
> > > > You basically need to read the process artifact (zip file) and encode
> > it
> > > > with Base64 and use it as the payload contents for deploy operation
> of
> > > > Deployment Service.
> > > >
> > > > Have a look at fileupload.jsp under ODE webapp.
> > > >
> > > > regards,
> > > > sathwik
> > > >
> > > > On Sat, Jan 31, 2015 at 6:42 PM, Marzie Dehghanipour <
> > > > [email protected]> wrote:
> > > >
> > > > > Hi,
> > > > > I am looking for sample implementation of deploying a process on
> > Apache
> > > > ODE
> > > > > engine using deployment service API. I want to use the deployment
> API
> > > > > exposed by ODE. This allows for transferring deployment units (zip
> > > files
> > > > > containing BPELs, WSDLs, DDs) via SOAP to ODE and starting the
> > > > deployment.
> > > > >
> > > > > Any help in this regard would be appreciated.
> > > > >
> > > >
> > >
> >
>

Reply via email to