You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Pedro Silva <ps...@dcc.online.pt> on 2006/02/21 01:21:32 UTC

Deploying services through webapps

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>




Re: Deploying services through webapps

Posted by Pedro Silva <ps...@dcc.online.pt>.
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>
> 
> 
>