# Java2WSDL: <class-of-portType> was not specified



## karstenkurt (21. Nov 2007)

Hallo,

ich versuche gerade eine WSDL-Datei erzeugen zu lassen. Leider haperts da ein wenig.

Der Aufruf
java org.apache.axis.wsdl.Java2WSDL -o test1.wsdl -l "http://localhost:8080/axis/services/AdressBook" -n urn:AdressBook -p"de.test.adressbook" de.test.adressbook.AdressBook

liefert leider nur
The <class-of-portType> was not specified.

Wie müsste der Aufruf denn richtig aussehen, um für die Klasse AdressBook im package de.test.adressbook eine WSDL-Datei erzuegen zu lassen?

Gruß
KK


----------



## Niki (21. Nov 2007)

Willst du das ganze aus der Kommandozeile machen, oder kann es auch ein ant-skript für dich erledigen?


----------



## karstenkurt (21. Nov 2007)

Hallo Niki,
wenn ich das in meiner Build.xml einbauen kann ist das am besten, aber es gehen auch andere Lösungen.

Gruß
KK


----------



## Niki (21. Nov 2007)

Ok, folgendes musst du in dein build.xml einbauen:


```
<property name="src.dir" value="${basedir}/src" />
	<property name="sys.dir" value="C:/Allg/_system" />
	<property name="axis.home" value="${sys.dir}/axis/1.4" />

	

	<property name="ws.wsdl"
	          value="${basedir}/wsdls/MyService.wsdl" />
	<property name="ws.interface"
	          value="mypackage.MyServiceInterface" />
	<property name="ws.implclass"
	          value="mypackage.MyServiceImpl" />
	<property name="ws.namespace"
	          value="urn:MyService" />
	<property name="ws.package"
	          value="mypackage.service" />
	<property name="ws.package.path"
	          value="mypackage/service" />
	<property name="ws.deploy.wsdd"
	          value="${basedir}/wsdds/myservice_deploy.wsdd" />
	<property name="ws.location"
	          value="http://localhost:8080/mywebapp/services/myservice" />

	<property name="ws.servletpath" value="mywebapp/services/AdminService" />


	
	<path id="axis.classpath">
		<fileset dir="${axis.home}/lib">
			<include name="**/*.jar" />
		</fileset>
	</path>

	
	<taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />

	
	<target name="java2wsdl">
		<axis-java2wsdl classname="${ws.interface}"
		                implclass="${ws.implclass}"
		                location="${ws.location}"
		                namespace="${ws.namespace}"
		                output="${ws.wsdl}"
		                style="DOCUMENT">
			<classpath path="${basedir}/classes" />			
		</axis-java2wsdl>
	</target>

	
	<target name="wsdl2java">
		<axis-wsdl2java output="${src.dir}"
		                testcase="false"
		                serverside="true"
		                verbose="true"
		                url="${ws.wsdl}"
		                implementationclassname="${ws.implclass}">
			<mapping namespace="${ws.namespace}"
			         package="${ws.package}" />
		</axis-wsdl2java>
		<move tofile="${ws.deploy.wsdd}"
		      file="${src.dir}/${ws.package.path}/deploy.wsdd" />
		<delete file="${src.dir}/${ws.package.path}/undeploy.wsdd" />
	</target>

	
	<target name="installws">
		<axis-admin port="8080"
		            hostname="localhost"
		            failonerror="true"
		            servletpath="${ws.servletpath}"
		            debug="true"
		            xmlfile="${ws.deploy.wsdd}" />
	</target>
```

Ich hoffe das kann dir weiter helfen!


----------



## karstenkurt (21. Nov 2007)

Super, danke.

Habe die Einträge in meine build.xml eingebaut und angepasst. Diesen Eintrag habe ich auf


```
<classpath refid="compile.classpath" />
```

geändert.

Der ClassPath ist so definiert.

```
<path id="compile.classpath">
		<pathelement path="WEB-INF/lib/activation.jar" />
		<pathelement path="WEB-INF/lib/axis.jar" />
		<pathelement path="WEB-INF/lib/axis-ant.jar" />
		<pathelement path="WEB-INF/lib/classes12.jar" />
		<pathelement path="WEB-INF/lib/commons-discovery.jar" />
		<pathelement path="WEB-INF/lib/commons-logging.jar" />
		<pathelement path="WEB-INF/lib/dom4j-1.6.1.jar" />
		<pathelement path="WEB-INF/lib/jaxen-1.1.1.jar" />
		<pathelement path="WEB-INF/lib/jaxrpc.jar" />
		<pathelement path="WEB-INF/lib/log4j.jar" />
		<pathelement path="WEB-INF/lib/mail.jar" />
		<pathelement path="WEB-INF/lib/nls_charset12.jar" />
		<pathelement path="WEB-INF/lib/ojdbc14.jar" />
		<pathelement path="WEB-INF/lib/saaj.jar" />
		<pathelement path="WEB-INF/lib/wsdl4j.jar" />
		<pathelement path="WEB-INF/lib/xmlsec.jar" />
		<pathelement path="WEB-INF/classes" />
		<pathelement path="${classpath}" />
	</path>
```
Leider kommt dann diese Fehlermeldung

```
java2wsdl:
[axis-java2wsdl] java.lang.NoClassDefFoundError: javax.mail.internet.MimeMultipart
[axis-java2wsdl] 	at org.apache.axis.encoding.DefaultTypeMappingImpl.class$(DefaultTypeMappingImpl.java:120)
[axis-java2wsdl] 	at org.apache.axis.encoding.DefaultTypeMappingImpl.initMappings(DefaultTypeMappingImpl.java:308)
[axis-java2wsdl] 	at org.apache.axis.encoding.DefaultTypeMappingImpl.<init>(DefaultTypeMappingImpl.java:91)
[axis-java2wsdl] 	at org.apache.axis.encoding.DefaultTypeMappingImpl.getSingletonDelegate(DefaultTypeMappingImpl.java:85)
[axis-java2wsdl] 	at org.apache.axis.encoding.TypeMappingRegistryImpl.<init>(TypeMappingRegistryImpl.java:155)
[axis-java2wsdl] 	at org.apache.axis.encoding.TypeMappingRegistryImpl.<init>(TypeMappingRegistryImpl.java:149)
[axis-java2wsdl] 	at org.apache.axis.wsdl.fromJava.Emitter.<clinit>(Emitter.java:747)
[axis-java2wsdl] 	at org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask.execute(Java2WsdlAntTask.java:172)
[axis-java2wsdl] 	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[axis-java2wsdl] 	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
[axis-java2wsdl] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[axis-java2wsdl] 	at java.lang.reflect.Method.invoke(Method.java:597)
[axis-java2wsdl] 	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[axis-java2wsdl] 	at org.apache.tools.ant.Task.perform(Task.java:348)
[axis-java2wsdl] 	at org.apache.tools.ant.Target.execute(Target.java:357)
[axis-java2wsdl] 	at org.apache.tools.ant.Target.performTasks(Target.java:385)
[axis-java2wsdl] 	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[axis-java2wsdl] 	at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[axis-java2wsdl] 	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[axis-java2wsdl] 	at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[axis-java2wsdl] 	at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[axis-java2wsdl] 	at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
[axis-java2wsdl] 	at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
```

Die Mail.jar ist aber da? Was kann das noch sein?

Gruß
KK


----------



## Niki (21. Nov 2007)

Welche Verson von axis verwendest du? Bei der Version 1.4 sind nur folgende jars notwendig:
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar

Versuchs einmal nur mit diesen Archiven. Es kann sein das im classpath Klassen verwendet werden, die andere Abhängigkeiten auch noch haben.


----------



## karstenkurt (21. Nov 2007)

Danke für den Hinweis. Hab die Mail.jar mal deaktiviert, dann gehts.

Hab dazu dieses Post gefunden
http://forum.java.sun.com/thread.jspa?threadID=770548&messageID=4390948
Ich brauche noch ein paar Jars mehr, da der service auf Oracle zugreift.

Gruß
KK


----------

