Bonjour, je me suis permis de mettre ce post dans le forum webservices aussi, ne sachant pas sur quel forum seraient les gens les plus aptes à me répondre.

je déroule actuellement les exemples de webservice fournis avec weblogic.

Pour ne pas s'embeter weblogic a, dans ses exemples, la facheuse habitude de mettre tous les fichiers (.jar, .java, .xml, ...) dans un seul répertoire.

Ainsi en est il de l'exemple dans le répertoire:
bea\weblogic81\samples\server\examples\src\examples\webservices\basic\statelessSession

Pour comprendre plus clairement ce qui est du ressort du client et du serveur, j'ai repris les fichiers de l'exemple et les ai organisé en deux projets eclipse:

projet client:
src - client.java
lib - ejb.jar
weblogic.jar
webservices.jar
conf - build.xml

projet serveur
src - les fichiers helloworld*.java
ejb-jar.xml

lib - ejb.jar
weblogic.jar
webservices.jar

conf - build.xml


juste un peu d'organisation en somme.

Le fichier build.xml initial a été divisé en deux.

projet client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
<project name="webservice-client-ejb" default="all">
 
	<property file="client.properties"/>
	<property file="example.properties"/>
	<property name="package.name" value="eu.cec.oib.webservice.client"/>
	<property name="clientjar.file" value="exampleClient.jar"/>
	<property name="ws_war.file" value="ws_example.war"/>
	<property name="ws_ear.file" value="ws_example.ear"/>
 
 
	<target name="all" depends="clean, generate-client"/>
	<target name="clean">
	    <delete dir="${build.dir}"/>
	    <delete file="${client.classes.dir}/${clientjar.file}"/>
	</target>
 
	<target name="generate-client" depends="clean">
		<mkdir dir="${client.classes.dir}"/>
		<clientgen
			clientJar= "${client.classes.dir}/${clientjar.file}"
			ear = "${dist.dir}/${ws_ear.file}"
			packageName = "${package.name}"
			warName= "${ws_war.file}"
		/>
 
		<javac src="${source.dir}"
			includes="**/Client.java">
			<classpath>
		        <pathelement path="${client.classes.dir}/${clientjar.file}" />
				<pathelement location="${lib.dir}/webservices.jar"/>
			</classpath>
		</javac>			
	</target>
 
</project>
Projet serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
<project name="webservice-service-ejb" default="all">
 
	<property file="server.properties"/>
	<property file="example.properties"/>
	<property name="ejb_jar.file" value="HelloWorld.jar"/>
	<property name="namespace"
	            value="http://www.bea.com/servers/wls/samples/eu/cec/oib/webservice/server" 
	  />
	<property name="servicename"
		            value="helloWorldService"/>
 
	<target name="all" depends="clean, ejb, ear"/>
	<target name="clean">
	    <delete dir="${build.dir}"/>
	    <delete file="${dist.dir}/${ws_ear.file}"/>
	    <delete file="${ejb_jar.file}"/>
	</target>
 
	<target name="ejb">
	    <delete dir="${build.dir}" />
	    <mkdir dir="${build.dir}"/>
	    <mkdir dir="${build.dir}/META-INF"/>
	    <copy todir="${build.dir}/META-INF">
	      <fileset dir="${source.dir}">
	        <include name="ejb-jar.xml"/>
	      </fileset>
	    </copy>
	    <javac srcdir="${source.dir}" includes="**/HelloWorld*.java" destdir="${build.dir}" />
	    <jar jarfile="${ejb_jar.file}" basedir="${build.dir}" />
	</target>
 
	<target name="ear" depends="ejb">
		<servicegen destEar="${ear.dir}" warName="${war.dir}" >
			<service
				ejbJar="${ejb_jar.file}"
				targetNamespace="${namespace}"
				serviceName="${servicename}"
				serviceURI="/${servicename}"
				generateTypes="True"
				expandMethods="True">
 
	<!--			<client
					packageName="eu.cec.oiob.webservice.client"
					clientJarName="${client_jar_file}"
				/>  -->
			</service>
 
		</servicegen>
	</target>
 
</project>
Quand je lance mon ant avec le build.xml coté serveur, pas de problème, il me génère le fichier ear avec les fichiers helloworld.jar (contenant les fichiers .class type helloworld*.class), web-services.xml, un fichier war, etc...

je copie ensuite mon fichier ear dans mon projet client, ceci afin de lui fournir de quoi générer les fichiers stub, interface de mon client.

Beaucoup de blabla, maintenant voici mon problème. Quand je lance mon ant sur mon build.xml de mon projet client pour qu'il me génère mes fichiers client du webservice, j'ai une erreur

voici le listing d'erreur:
Buildfile: build.xml

clean:
[delete] Deleting directory D:\Bruno\eclipse_workspace\clientwebserviceWeblogic\build

generate-client:
[mkdir] Created dir: D:\Bruno\eclipse_workspace\clientwebserviceWeblogic\build\clientclasses
[clientgen] Generating client jar for ws_example.ear ...
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:9: package javax.xml.rpc does not exist
[clientgen] public interface HelloWorldService extends javax.xml.rpc.Service{
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:11: package weblogic.webservice.context does not exist
[clientgen] weblogic.webservice.context.WebServiceContext context();
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:13: package weblogic.webservice.context does not exist
[clientgen] weblogic.webservice.context.WebServiceContext joinContext()
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:14: package weblogic.webservice.context does not exist
[clientgen] throws weblogic.webservice.context.ContextNotFoundException;
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:16: package javax.xml.rpc does not exist
[clientgen] eu.cec.oib.webservice.client.HelloWorldServicePort gethelloWorldServicePort() throws javax.xml.rpc.ServiceException;
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService.java:18: package javax.xml.rpc does not exist
[clientgen] eu.cec.oib.webservice.client.HelloWorldServicePort gethelloWorldServicePort(String username, String password) throws javax.xml.rpc.ServiceException;
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService_Impl.java:10: package weblogic.webservice.core.rpc does not exist
[clientgen] extends weblogic.webservice.core.rpc.ServiceImpl
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:9: package weblogic.webservice.core.rpc does not exist
[clientgen] extends weblogic.webservice.core.rpc.StubImpl
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:12: package weblogic.webservice does not exist
[clientgen] public HelloWorldServicePort_Stub( weblogic.webservice.Port _port ){
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService_Impl.java:9: eu.cec.oib.webservice.client.HelloWorldService_Impl is not abstract and does not override abstract method joinContext() in eu.cec.oib.webservice.client.HelloWorldService
[clientgen] public class HelloWorldService_Impl
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService_Impl.java:40: cannot resolve symbol
[clientgen] symbol : method _getPort (java.lang.String)
[clientgen] location: class eu.cec.oib.webservice.client.HelloWorldService_Impl
[clientgen] new eu.cec.oib.webservice.client.HelloWorldServicePort_Stub( _getPort( "helloWorldServicePort" ) );
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldService_Impl.java:49: cannot resolve symbol
[clientgen] symbol : method _setUser (java.lang.String,java.lang.String,eu.cec.oib.webservice.client.HelloWorldServicePort)
[clientgen] location: class eu.cec.oib.webservice.client.HelloWorldService_Impl
[clientgen] _setUser( username, password, gethelloWorldServicePort() );
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:24: cannot resolve symbol
[clientgen] symbol : method _wrap (int)
[clientgen] location: class eu.cec.oib.webservice.client.HelloWorldServicePort_Stub
[clientgen] _args.put( "intVal", _wrap( intVal ) );
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:25: cannot resolve symbol
[clientgen] symbol : method _wrap (java.lang.String)
[clientgen] location: class eu.cec.oib.webservice.client.HelloWorldServicePort_Stub
[clientgen] _args.put( "string", _wrap( string ) );
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:27: cannot resolve symbol
[clientgen] symbol : method _invoke (java.lang.String,java.util.HashMap)
[clientgen] location: class eu.cec.oib.webservice.client.HelloWorldServicePort_Stub
[clientgen] java.lang.Object _result = _invoke( "sayHello", _args );
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:29: package javax.xml.rpc does not exist
[clientgen] } catch (javax.xml.rpc.JAXRPCException e) {
[clientgen] ^
[clientgen] C:\Documents and Settings\moi\Local Settings\Temp\exampleClient.jar863150501\eu\cec\oib\webservice\client\HelloWorldServicePort_Stub.java:31: package javax.xml.rpc.soap does not exist
[clientgen] } catch (javax.xml.rpc.soap.SOAPFaultException e) {
[clientgen] ^
[clientgen] 17 errors
[clientgen] java.io.IOException: Compiler failed executable.exec
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(CompilerInvoker.java:469)
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:328)
[clientgen] at weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:336)
[clientgen] at weblogic.webservice.tools.build.internal.CompilerHelper.compileFiles(CompilerHelper.java:80)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.compileStubs(ClientGenImpl.java:627)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.generateStub(ClientGenImpl.java:572)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.doClientGenFromEAR(ClientGenImpl.java:521)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.run(ClientGenImpl.java:345)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.doClientGen(ClientGenTask.java:351)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.execute(ClientGenTask.java:208)
[clientgen] at org.apache.tools.ant.Task.perform(Task.java:341)
[clientgen] at org.apache.tools.ant.Target.execute(Target.java:309)
[clientgen] at org.apache.tools.ant.Target.performTasks(Target.java:336)
[clientgen] at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
[clientgen] at org.apache.tools.ant.Project.executeTargets(Project.java:1255)
[clientgen] at org.apache.tools.ant.Main.runBuild(Main.java:609)
[clientgen] at org.apache.tools.ant.Main.start(Main.java:196)
[clientgen] at org.apache.tools.ant.Main.main(Main.java:235)

BUILD FAILED
file:/Bruno/eclipse_workspace/clientwebserviceWeblogic/conf/build.xml:24: weblogic.webservice.tools.build.WSBuildException: Compiler failed executable.exec - with nested exception:
[java.io.IOException: Compiler failed executable.exec]

Total time: 3 seconds

ce que je crois comprendre c'est que lorsque ma tache ant clientgen cherche à créer mon client à l'aide du contenu du fichier ear, elle se plante car elle ne comprend pas les instructions qu'elle génère du type:
package weblogic.webservice.context

je suppose qu'elle ne trouve pas les librairies webservices.jar, weblogic.jar, ejb.jar.

Ma question, enfin..., est:
comment faire comprendre à ma tache clientgen de ant ou trouver les fichiers .jar dont elle a besoin?

comment ca c'est long? c'est que je tenais à être exhaustif afin que vous ayez toutes les cartes en main pour me répondre.

Merci :
- à ceux qui sont arrivés jusqu'ici
- beaucoup à ceux qui souhaite m'aider!