# [SOAP] wsdl & maven & java 1.8



## Dagobert (2. Sep 2014)

Einen wunderschönen guten Tag... =)
Ich habe folgendes Problem. 
<unwichtig>
Für meine BA soll ich mit Hilfe von Inhabiation eine Android Applikation erstellen. Dazu muss ich einen Codegenerator schreiben der einen Webservice anspricht. 
</unwichtig>
Benutzt habe ich dazu Java 1.8 mit JavaFX und Eclipse 4.4.0
Dabei muss ich einen Webservice auf SOAP Basis ansprechen. (noch nie vorher gemacht, REST <3)
Jetzt habe ich mir die wsdl Datei gezogen und mit dem Standad Java Tools (wsimport oder so glaube ich) in classes übersetzt... lösche ich nun die wsdl Datei oder benutze das Project auf einem anderen Rechner läuft gar nix mehr... ist das richtig so? oder habe ich da schon nen Fehler gemacht?

Schön und gut hab ich mir gedacht und Maven angeschmissen.
Dazu habe ich mir das

```
<plugin>
		<groupId>org.apache.axis</groupId>
		<artifactId>maven-wsdl2java-plugin</artifactId>
		<version>${wsdl.version}</version>
</plugin>
```
maven plugin geschnappt.

Meine gante pom sieht so aus

```
<artifactId>client</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<wsdl.version>1.4.1-SNAPSHOT</wsdl.version>
		<log.version>1.2.17</log.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log.version}</version>
		</dependency>
	</dependencies>
	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.axis</groupId>
				<artifactId>maven-wsdl2java-plugin</artifactId>
				<configuration>
					<file>${basedir}/InhabitationService.wsdl</file>
					<generate>client</generate>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.axis</groupId>
					<artifactId>maven-wsdl2java-plugin</artifactId>
					<version>${wsdl.version}</version>
				</plugin>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.cxf
										</groupId>
										<artifactId>
											cxf-codegen-plugin
										</artifactId>
										<versionRange>
											[${cxf.version},)
										</versionRange>
										<goals>
											<goal>wsdl2java</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
```

Leider wird aus meinen WSDL Dateien keine classen erstellt und eingebunden =/
Was mache ich falsch?

lg. Dagobert


----------



## Dagobert (2. Sep 2014)

Okay ich habe jetzt mal das Plugin gewechselt...
und dies macht schon mal mehr =) Jetzt scheint erstmal die wsdl Datei fehlerhaft zu sein...


```
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>de.kotschenreuther.fabian.bachelor</groupId>
	<artifactId>client</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<log.version>1.2.17</log.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log.version}</version>
		</dependency>
	</dependencies>
	<build>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>axistools-maven-plugin</artifactId>
				<version>1.4</version>
				<configuration>
					<wsdlFiles>
						<wsdlFile>InhabitationService.wsdl</wsdlFile>
					</wsdlFiles>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>wsdl2java</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>javax.mail</groupId>
						<artifactId>mail</artifactId>
						<version>1.4</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.cxf
										</groupId>
										<artifactId>
											cxf-codegen-plugin
										</artifactId>
										<versionRange>
											[${cxf.version},)
										</versionRange>
										<goals>
											<goal>wsdl2java</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
```

lg. Dagobert


----------



## vogelfrei (2. Sep 2014)

Und was hat Maven in die Konsole geschrieben? Teile dein WSDL hier, vielleicht etwas fehlt, z.b. es referenziert fehlende XSD schema oder etwas.


----------



## Dagobert (2. Sep 2014)

Okay das hat sich schonmal erledigt... Das .net schreibt inkompatible Sachen heraus... womit Java/Maven-Plugin nichts anfangen kann ...
(warum ignoriert wsimport diese Fehler bzw warnt nur  und die maven plugins können nichts mit der Datei anfangen oO)

Jedoch läuft das bauen noch nicht rund.
Wenn ich jetzt mvn compile aufrufe kommt folgender Fehler:


> [INFO] Scanning for projects...
> [INFO]
> [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
> [INFO]
> ...



Was läuft da also noch falsch?

lg. Dagobert


----------



## vogelfrei (2. Sep 2014)

Dein pom.xml ist falsch, weil du hast viele kompilation Fehler, z.b. "package org.apache.axis.description does not exist". Du solltest zusätzliche Dependencies hinzufuegen.  

Hier ist ein Beispiel: 

<dependency>
	<groupId>javax.xml</groupId>
	<artifactId>jaxrpc-api</artifactId>
	<version>1.1</version>
</dependency>

Das sollte die "package javax.xml.rpc does not exist" Fehler lösen.

Andere Dependencies kannst du hier finden Maven Repository: Search/Browse/Explore, suche nach der fehlenden Java Paket.


----------



## Dagobert (2. Sep 2014)

Ja die hat gefehlt und

```
<dependency>
	<groupId>org.apache.axis</groupId>
	<artifactId>axis</artifactId>
	<version>1.4</version>
</dependency>
```

hat auch noch gefehlt =) Thx dafür schonmal...
Werden iwo im MavenRepo die benötigten Abhängigkeiten eigentlich mit angegeben? War ich heute so blind?  bzw woher weiß ich welche Abhängigkeiten schon da sind und welche nicht?

lg. Dagobert


----------



## vogelfrei (3. Sep 2014)

Du solltest für jedes Projekt alle benötigte Äbhangigkeiten im pom.xml anlisten.


----------

