Hello,
I finally solved the problem! I was using the wrong URL in
setTargetEndpointAddress ..
In my first code I was using :
URL url = new URL ("http://localhost:8080/Teste/services/Teste");
admClient.setTargetEndpointAddress(url);
After some thinking :-) I changed it to:
URL("http://localhost:8080/Teste/servlet/AxisServlet");
admClient.setTargetEndpointAddress(url);
and now it works fine.
I can now deploy and undeploy my service from a servlet in the same server.
Hope it helps someone that tries to use this and doesn't find much
information like I didn't...
Pedro Silva
> Hi,
>
>
> I've started working with Axis for the past weeks, and I've been trying
> to implement a webapp that allows me to list and do deployments and
> undeployments without having to use the command line. (interesting for
> remote servers).
>
> I've been trying to do it with AdminClient class that I've found in the
> API, but I'm having some problems...
>
> I've followed the instructions on placing axis inside a webapp. I placed
> the necessary jars inside WEB-INF/lib and altered web.xml to have the
> necessary servlet and servlet-mappings entries. I've also copied the
> server-config.wsdd in axis to WEB-INF.
>
> I built a servlet with two buttons deploy and undeploy, the first time I
> access it, I can do deploy but if I try to do undeploy nothing happens.
> One curious thing is that the deploy service remains there even after
> several restarts and after some time the service disappears.
>
> So at this point I'm thinking if this is the right approach? Should this
> be done? And if yes is this the right class to use?
>
> This is part of the code I'm using for deploy/undeploy
>
> AdminClient admClient;
> admClient = new AdminClient();
> URL url = new URL ("http://localhost:8080/Teste/services/Teste");
> admClient.setTargetEndpointAddress(url);
> //admClient.setTransport("http");
>
> String command = request.getParameter("command");
>
> if (command != null) {
> File wsdd = null;
> if ("deploy".equals(command)) {
> wsdd = new File(home+"WEB-INF/deploy.wsdd");
> admClient.process(new FileInputStream(wsdd));
> } else if ("undeploy".equals(command)) {
> wsdd = new File(home+"WEB-INF/undeploy.wsdd");
> admClient.process(new FileInputStream(wsdd));
> }
>
> Below are the web.xml and server-config.wsdd deploy.wsdd and undeploy.wsdd.
>
> I'm using eclipse 3.1.2 to write the code, Tomcat 5.5 axis1.3 and java
> 1.5.0_06
>
> Thanks in advance,
> Pedro Silva
>
> My *deploy.wsdd* :
>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
> <service name="Teste" provider="java:MSG">
> <parameter name="className" value="teste.Teste"/>
> <parameter name="allowedMethods" value="*"/>
> </service>
> </deployment>
>
> My *undeploy.wsdd* :
>
> <undeployment xmlns="http://xml.apache.org/axis/wsdd/">
> <service name="Teste"/>
> </undeployment>
>
>
> *My web.xml* :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app id="WebApp_ID" version="2.4"
> xmlns="http://java.sun.com/xml/ns/j2ee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
> <display-name>Teste</display-name>
> <servlet>
> <display-name>Apache-Axis Servlet</display-name>
> <servlet-name>AxisServlet</servlet-name>
> <servlet-class>
> org.apache.axis.transport.http.AxisServlet
> </servlet-class>
> </servlet>
> <servlet>
> <display-name>Axis Admin Servlet</display-name>
> <servlet-name>AdminServlet</servlet-name>
> <servlet-class>
> org.apache.axis.transport.http.AdminServlet
> </servlet-class>
> <load-on-startup>100</load-on-startup>
> </servlet>
> <servlet>
> <description>
> </description>
> <display-name>
> AdminTeste</display-name>
> <servlet-name>AdminTeste</servlet-name>
> <servlet-class>
> teste.AdminTeste</servlet-class>
> </servlet>
> <servlet-mapping>
> <servlet-name>AxisServlet</servlet-name>
> <url-pattern>/servlet/AxisServlet</url-pattern>
> </servlet-mapping>
> <servlet-mapping>
> <servlet-name>AxisServlet</servlet-name>
> <url-pattern>/services/*</url-pattern>
> </servlet-mapping>
> <servlet-mapping>
> <servlet-name>AdminServlet</servlet-name>
> <url-pattern>/servlet/AdminServlet</url-pattern>
> </servlet-mapping>
> <servlet-mapping>
> <servlet-name>AdminTeste</servlet-name>
> <url-pattern>/AdminTeste</url-pattern>
> </servlet-mapping>
> <welcome-file-list>
> <welcome-file>index.html</welcome-file>
> <welcome-file>index.htm</welcome-file>
> <welcome-file>index.jsp</welcome-file>
> <welcome-file>default.html</welcome-file>
> <welcome-file>default.htm</welcome-file>
> <welcome-file>default.jsp</welcome-file>
> </welcome-file-list>
> </web-app>
>
>
> My *server-config.wsdd* :
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
> <globalConfiguration>
> <parameter name="sendMultiRefs" value="true"/>
> <parameter name="disablePrettyXML" value="true"/>
> <parameter name="adminPassword" value="admin"/>
> <parameter name="attachments.Directory"
> value="/home/psilva/tomcat/webapps/axis/WEB-INF/attachments"/>
> <parameter name="dotNetSoapEncFix" value="true"/>
> <parameter name="enableNamespacePrefixOptimization" value="false"/>
> <parameter name="sendXMLDeclaration" value="true"/>
> <parameter name="sendXsiTypes" value="true"/>
> <parameter name="attachments.implementation"
> value="org.apache.axis.attachments.AttachmentsImpl"/>
> <requestFlow>
> <handler type="java:org.apache.axis.handlers.JWSHandler">
> <parameter name="scope" value="session"/>
> </handler>
> <handler type="java:org.apache.axis.handlers.JWSHandler">
> <parameter name="scope" value="request"/>
> <parameter name="extension" value=".jwr"/>
> </handler>
> </requestFlow>
> </globalConfiguration>
> <handler name="LocalResponder"
> type="java:org.apache.axis.transport.local.LocalResponder"/>
> <handler name="URLMapper"
> type="java:org.apache.axis.handlers.http.URLMapper"/>
> <handler name="Authenticate"
> type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
> <service name="AdminService" provider="java:MSG">
> <parameter name="allowedMethods" value="AdminService"/>
> <parameter name="enableRemoteAdmin" value="true"/>
> <parameter name="className" value="org.apache.axis.utils.Admin"/>
> <namespace>http://xml.apache.org/axis/wsdd/</namespace>
> <namespace>http://xml.apache.org/axis/wsdd/</namespace>
> <namespace>http://xml.apache.org/axis/wsdd/</namespace>
> </service>
> <service name="Version" provider="java:RPC">
> <parameter name="allowedMethods" value="getVersion"/>
> <parameter name="className" value="org.apache.axis.Version"/>
> </service>
> <transport name="http">
> <requestFlow>
> <handler type="URLMapper"/>
> <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
> </requestFlow>
> <parameter name="qs:list"
> value="org.apache.axis.transport.http.QSListHandler"/>
> <parameter name="qs:wsdl"
> value="org.apache.axis.transport.http.QSWSDLHandler"/>
> <parameter name="qs.list"
> value="org.apache.axis.transport.http.QSListHandler"/>
> <parameter name="qs.method"
> value="org.apache.axis.transport.http.QSMethodHandler"/>
> <parameter name="qs:method"
> value="org.apache.axis.transport.http.QSMethodHandler"/>
> <parameter name="qs.wsdl"
> value="org.apache.axis.transport.http.QSWSDLHandler"/>
> </transport>
> <transport name="local">
> <responseFlow>
> <handler type="LocalResponder"/>
> </responseFlow>
> </transport>
> </deployment>
>
>
>