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

Status
Nicht offen für weitere Antworten.

karstenkurt

Mitglied
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

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

karstenkurt

Mitglied
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

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

Code:
	<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

Mitglied
Super, danke.

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

Code:
<classpath refid="compile.classpath" />

geändert.

Der ClassPath ist so definiert.
Code:
<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
Code:
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

Top Contributor
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben