Dears Sirs,

I have been trying to invoke an ejb through wsif until now I haven't
succeded in getting the EJBPort.
WSIFTest founds only SOAP- and JavaPort. 
Could anyone help me finding the mistake?

Thx,
Max 

Here is my java code and wsdl code.

/*
 * Created on 16.05.2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.util.Iterator;

import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFMessage;
import org.apache.wsif.WSIFOperation;
import org.apache.wsif.WSIFPort;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;

/**
 * @author [EMAIL PROTECTED]
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class WsifTest {

        public static void main(String[] args) {
                try {
                        //create a service factory
                WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
                WSIFService service = factory.getService("D:/hello.wsdl", 
                                                                                
                null, 
                                                                                
                        null, 
                                                                                
                        "http://www.actis.atosorigin.de/services/hello";,
                                                                                
                        "helloPT");
                
                Iterator it = service.getAvailablePortNames();
                while(it.hasNext()){
                        Object o = it.next();
                        System.out.println(o);
                }
                
                WSIFPort port = service.getPort();
                
                //calling method
                WSIFOperation operation = port.createOperation("sayHello");
                
                //create the messages
                WSIFMessage input = operation.createInputMessage();
                WSIFMessage output = operation.createOutputMessage();
                WSIFMessage fault = operation.createFaultMessage();
                
                //fill in the input message 
                input.setObjectPart("sayHelloParam", "Max");
                
                //invoke the method
                if 
(operation.executeRequestResponseOperation(input,output,fault))
{
                        // invocation succeeded
                        // extract the address from the output message
                        String result = (String) 
output.getObjectPart("sayHelloReturn");
                        System.out.println("Invoked succssfully: " + result);
                } else {
                        System.out.println(fault);
                }
                } catch (WSIFException we) {
                    System.out.println("Got exception from WSIF, details:");
                    we.printStackTrace(); 


                }
        }
}

##################################################################################
WSDL
##################################################################################

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="http://www.actis.atosorigin.de/services/hello";

        xmlns:he="http://www.actis.atosorigin.de/services/hello";   
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
        xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/";
    xmlns:ejb="http://schemas.xmlsoap.org/wsdl/ejb/"; 
    xmlns:java="http://schemas.xmlsoap.org/wsdl/java/";
        xmlns:xsd="http://www.w3.org/2001/XMLSchema";
        xmlns="http://schemas.xmlsoap.org/wsdl/";>

   <message name="sayHelloRequest">
      <part name="sayHelloParam" type="xsd:string"/>
   </message>

   <message name="sayHelloResponse">
      <part name="sayHelloReturn" type="xsd:string"/>
   </message>
   
    <message name="sayHelloFault">
      <part name="faultMessage" type="xsd:string"/>
   </message>

   <portType name="helloPT">
      <operation name="sayHello" parameterOrder="sayHelloParam">
         <input message="he:sayHelloRequest" name="sayHelloRequest"/>
         <output message="he:sayHelloResponse" name="sayHelloResponse"/>
         <fault message="he:sayHelloFault" name="sayHelloFault"/>
      </operation>
   </portType>

   <binding name="HelloSoapBinding" type="he:helloPT">
      <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sayHello">
         <soap:operation soapAction=""/>
         <input name="sayHelloRequest">
            <soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://www.actis.atosorigin.de/services/hello"; use="encoded"/>
         </input>
         <output name="sayHelloResponse">
            <soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://www.actis.atosorigin.de/services/hello"; use="encoded"/>
         </output>
         <fault name="sayHelloFault">
            <soap:fault name="HelloFault"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="http://www.actis.atosorigin.de/services/hello"; use="encoded"/>
         </fault>
      </operation>
   </binding>
   
   <binding name="HelloJavaBinding" type="he:helloPT">
                <java:binding/>
        <format:typeMapping encoding="Java" style="Java">
                <format:typeMap typeName="xsd:string" 
formatType="java.lang.String"
/>
        </format:typeMapping>
        <operation name="sayHello">
                <java:operation methodName="sayHello" methodType="instance"/>
                <input/>
                <output/>
        </operation>       
        </binding>
        
        <binding name="HelloEjbBinding" type="he:helloPT">
                <ejb:binding/>
        <format:typeMapping encoding="Java" style="Java">
                <format:typeMap typeName="xsd:string"
formatType="java.lang.String"/>
        </format:typeMapping>
        <operation name="sayHello">
                <ejb:operation 
                        methodName="sayHello"
                        parameterOrder="sayHelloParam"
                        interface="remote"/>
                        <input name="sayHelloRequest"/>
                        <output name="sayHelloResponse"/>
        </operation>       
        </binding>

   <service name="HelloService">
      <port name="SOAPPort" binding="he:HelloSoapBinding">
         <soap:address
location="http://localhost:8080/axis/services/Hello"/>
      </port>
      <port name="JavaPort" binding="he:HelloJavaBinding">
         <java:address className="services.hello.HelloImpl"/>
      </port>
      <port name="EJBPort" binding="he:HelloEjbBinding">
                <!-- Put vendor-specific deployment information here -->
                        <ejb:address 
className="services.hello.ejb.HelloSessionHome"
                                        jndiName="ejb/service/HelloSession"
                   
        initialContextFactory="org.jnp.interfaces.NamingContextFactory"
                                jndiProviderURL="jnp://localhost:1099"/>
          </port>
   </service>
   
   <plnk:partnerLinkType name="HelloLinkType">
       <plnk:role name="Responder">
           <plnk:portType name="he:helloPT"/>
       </plnk:role>
    </plnk:partnerLinkType>

</definitions>

-- 
5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail
+++ GMX - die erste Adresse f�r Mail, Message, More +++

-- 
5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail
+++ GMX - die erste Adresse f�r Mail, Message, More +++

Reply via email to