# wsdl into Java-Klassen Maven-Plugin



## Eisscholle86 (26. Nov 2009)

Hallo,

ich habe ein Problem mit dem Erzeugen von Java-Klassen aus einer WSDL mittels Maven-Plugin.

Ich erhalte folgende Exception, die ich nicht ganz deuten kann. Die Warnung ist m.E. für mich egal!?


```
26.11.2009 11:02:45 org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNUNG: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
[DEBUG] argslist: [-o, D:\pfad\bs_bing_geocoder_war\src\main\java, -w, file:/D:/pfad/bing_geocoder/bs_bing_geocoder_war/src/main/wsdl/geocodeservice.wsdl]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error generating Java code from WSDL.

Embedded error: Error running Axis
ERROR: Missing <soap:fault> element inFault "ResponseSummaryFault" in operation "ResponseSummaryFault", in binding Geocode
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Error generating Java code from WSDL.
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:703)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:592)
	at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error generating Java code from WSDL.
	at org.codehaus.mojo.axistools.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:382)
	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
	... 16 more
Caused by: org.codehaus.mojo.axistools.axis.AxisPluginException: Error running Axis
	at org.codehaus.mojo.axistools.wsdl2java.WSDL2JavaWrapper.execute(WSDL2JavaWrapper.java:81)
	at org.codehaus.mojo.axistools.wsdl2java.DefaultWSDL2JavaPlugin.execute(DefaultWSDL2JavaPlugin.java:298)
	at org.codehaus.mojo.axistools.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:378)
	... 18 more
Caused by: java.io.IOException: ERROR: Missing <soap:fault> element inFault "ResponseSummaryFault" in operation "ResponseSummaryFault", in binding Geocode
	at org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858)
	at org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549)
	at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744)
	at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543)
	at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518)
	at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)
	at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
	at java.lang.Thread.run(Thread.java:595)
```
 


Ich habe alle in der Datei http://dev.virtualearth.net/webservices/v1/metadata/geocodeservice/geocodeservice.wsdl verlinkten *.wsdl und *.xsd mit lokal in das Verzeichnis /src/main/wsdl/ kopiert, da ich hinter einem Proxy sitze und leider nicht nach außen komme, obwohl ich die settings.xml konfiguriert habe.

Hier meine pom.xml:


```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<parent>
		<groupId>p.f.a.d.binggeocoder</groupId>
		<artifactId>binggeocoder</artifactId>
		<version>xyz</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<artifactId>bs_bing_geocoder_war</artifactId>
	<packaging>war</packaging>
	<name>BingGeocoderService_war</name>
	<description />
	<properties>
		<ServiceVersion>abc</ServiceVersion>
	</properties>
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>axistools-maven-plugin</artifactId>
				<version>1.3</version>
				<configuration>
					<sourceDirectory>src/main/wsdl</sourceDirectory>
					<outputDirectory>src/main/java</outputDirectory>
					<wsdlFiles>
						<!-- <wsdlFile>http://dev.virtualearth.net/webservices/v1/metadata/geocodeservice/geocodeservice.wsdl</wsdlFile> -->
						<wsdlFiles>geocodeservice.wsdl</wsdlFiles>
					</wsdlFiles>
				</configuration>
				
					<executions> 
						<execution> 
							<id>generateWsStub</id>
							<phase>generate-sources</phase>
							<goals>
								<goal>wsdl2java</goal>
							</goals>
						</execution>
					</executions>
				
			</plugin>
		</plugins>
	</build>

	
	<dependencies>
		<dependency>
			<groupId>axis</groupId>
			<artifactId>axis</artifactId>
			<version>1.4</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
		<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>net.jcip</groupId>
            <artifactId>jcip-annotations</artifactId>
            <version>1.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.4</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>        
	</dependencies>
```
 
Mache ich jetzt ein maven install, soll er eigentlich die Java-Klassen erzeugen, womit er auch beginnt, dann aber abbricht.
Den Fehler den er findet kann ich aber beim besten Willen nicht lokalisieren und beheben!? Im Netz habe ich gefunden, dass es am Namespace mit soap12:fault liegen könnte, sehe ich aber bei mir nicht direkt. Kann es sein, dass er noch etwas aus dem Netz beziehen muss und daran scheitert, dass er keien Zugriff hat? Nur sieht die Fehlermeldung danach nicht aus!? 

Sieht jemand das Problem und/oder hat eine Lösungsidee?

Vielen Dank.


----------



## Eisscholle86 (30. Nov 2009)

Hallo,

ich konnte jetzt mit fremder Hilfe etwas weiter kommen und habe jetzt fast schon eher eine allg. Frage. Während der Kompilierung erhalte ich folgende Exception:



> Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
> D:\pfad\bs_bing_geocoder_war\target\jaxws\wsimport\java\net\virtualearth\dev\webservices\v1\geocode\GeocodeService.java:[63,37] cannot find symbol
> symbol  : method getPort(javax.xml.namespace.QName,java.lang.Class<net.virtualearth.dev.webservices.v1.geocode.IGeocodeService>,javax.xml.ws.WebServiceFeature[])
> location: class javax.xml.ws.Service



Das liegt wohl daran, dass in Java EE 5 diese Methode noch nicht mit dieser Signatur definiert ist: Service (Java EE 5) (getPort...) im Vergleich zu Service (Java EE 6 - DRAFT) (getPort...) Jetzt habe ich das mit dem SDK 6 kompiliert, wo die benötigte Signatur auch vorhanden sein müsstem, nur erhalte ich wieder den gleichen Fehler. Habe ich hier an der falschen Stelle angesetzt?

Danke.


----------



## Sergeant_Pepper (12. Jan 2010)

Hallo,

```
<wsdlFiles>
     <!-- <wsdlFile>http://dev.virtualearth.net/webservices/v1/metadata/geocodeservice/geocodeservice.wsdl</wsdlFile> -->
     <wsdlFiles>geocodeservice.wsdl</wsdlFiles>
</wsdlFiles>
```
Du hast das Element <wsdlFile*s*> in <wsdlFiles> hineingeschachtelt. Es muss aber so sein wie in der auskommentieren Zeile (Mehrzahl außen, Einzahl innen).


----------

