axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davanum Srinivas <dava...@gmail.com>
Subject Re: JavaServiceImplWriter problem (port QName)
Date Mon, 05 Jul 2004 16:11:31 GMT
Jongjin,

Can you please submit a "cvs diff -u" to our bug database?
(http://issues.apache.org/jira/)

thanks,
dims


----- Original Message -----
From: Jongjin Choi <gunsnroz@hotmail.com>
Date: Tue, 6 Jul 2004 00:13:08 +0900
Subject: JavaServiceImplWriter problem (port QName)
To: axis-dev@ws.apache.org







Hi.

 

Currently the 
code generated by the JavaServiceImplWriter 
seems not to

keep the qname of port 
in the WSDL.

 

Using Java2Wsdl with 
this wsdl

http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl which 
has the wsdl:service like this:

 

 

<service 
name='net.xmethods.services.stockquote.StockQuoteService'>

  
<documentation>net.xmethods.services.stockquote.StockQuote web 
service</documentation>

  <port 
name='net.xmethods.services.stockquote.StockQuotePort' 

       
binding='tns:net.xmethods.services.stockquote.StockQuoteBinding'>

     <soap:address 
location='http://64.124.140.30:9090/soap'/>

   
</port>

</service>

 

 

the generated Service 
Locator code is:

 

 

    // 
The WSDD service name defaults to the port name.
    private 
java.lang.String NetXmethodsServicesStockquoteStockQuotePortWSDDServiceName = 


                
"NetXmethodsServicesStockquoteStockQuotePort";  <--- 
(1)


    
public stock.NetXmethodsServicesStockquoteStockQuotePortType 
getNetXmethodsServicesStockquoteStockQuotePort(java.net.URL portAddress) throws 
javax.xml.rpc.ServiceException {
        
try {
            
stock.NetXmethodsServicesStockquoteStockQuoteBindingStub _stub = new 
stock.NetXmethodsServicesStockquoteStockQuoteBindingStub(portAddress, 
this);
            
_stub.setPortName(getNetXmethodsServicesStockquoteStockQuotePortWSDDServiceName());
<--- 
(3)
            return 
_stub;
        
}
        catch (org.apache.axis.AxisFault 
e) {
            
return null;
        
}
    }

 

public 
java.util.Iterator getPorts() {
        if 
(ports == null) 
{
            ports = 
new 
java.util.HashSet();
            
ports.add(new 
javax.xml.namespace.QName("NetXmethodsServicesStockquoteStockQuotePort"));  
<-- (2) 
        
}
        return 
ports.iterator();
    }

 

 

 

 

The javified port QName 
is used in (1), (2) and the port name for _stub is set using this javified name 
in (3).

 

So we can not set 
up client JAX-RPC handler code using the name in the WSDL. 


When settng up client 
JAX-RPC handler, the developer should know the javified name by inspecting the 
generated Locator code like this:

 

 

HandlerRegistry reg = 
service.getHandlerRegistry();
QName portName 

       = new QName("http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/",

           "NetXmethodsServicesStockquoteStockQuotePort");   
// <-- Javified Name

 

List list = new 
ArrayList();
list.add(new HandlerInfo(ClientHandler.class, null, 
null));
reg.setHandlerChain(portName, list);

 

 

 

I think that the 
developer can use the wsdl port name directly instead of inspecting the 
Axis-generated code like this:

 

 

 

HandlerRegistry reg = service.getHandlerRegistry();
  QName 
portName = new QName("http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/",


     
"net.xmethods.services.stockquote.StockQuotePort");   // <-- xml 
name in WSDL

 

 

 

I made a some modification in the JavaServiceImplWriter and it worked. 


I'd like the axis committer to check and apply this 
fix.

The diff with the currently Axis cvs code is 
following:

 

--------------------------------------------------------------------

 

cvs -q diff 
JavaServiceImplWriter.java (in directory 
D:\src\ws-axis\java\src\org\apache\axis\wsdl\toJava\)
Index: 
JavaServiceImplWriter.java
===================================================================
RCS 
file: 
/home/cvspublic/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java,v
retrieving 
revision 1.37
diff -r1.37 
JavaServiceImplWriter.java
100a101
>         
Vector getPortPortXmlNames = new 
Vector();
153a155
>             
String portXmlName = 
p.getName();
174a177
>             
getPortPortXmlNames.add(portXmlName);
241c244
<             
writeWSDDServiceNameInfo(pw, wsddServiceName, 
portName);
---
>             
writeWSDDServiceNameInfo(pw, wsddServiceName, portName, 
portXmlName);
250c253
<         
writeGetPortQNameClass(pw, 
getPortPortNames);
---
>         
writeGetPortQNameClass(pw, getPortPortNames, 
getPortPortXmlNames);
252c255
<         
writeGetPorts(pw, 
getPortPortNames);
---
>         
writeGetPorts(pw, sEntry.getQName().getNamespaceURI(), 
getPortPortXmlNames);
292c295
<                                             
String portName) 
{
---
>                                             
String portName, String portXmlName) 
{
297c300
<                 
+ portName + 
"\";");
---
>                 
+ portXmlName + "\";");        

464c467,468
<                                           
Vector getPortPortNames) 
{
---
>                                           
Vector getPortPortNames,
> 
            Vector 
getPortPortXmlNames) 
{
481a486
>             
String portXmlName = (String) 
getPortPortXmlNames.get(i);
483c488
<             
pw.println("if (\"" + portName + "\".equals(inputPortName)) 
{");
---
>             
pw.println("if (\"" + portXmlName + "\".equals(inputPortName)) 
{");
520c525
<     protected void 
writeGetPorts(PrintWriter pw, Vector portNames) 
{
---
>     protected void 
writeGetPorts(PrintWriter pw, String namespaceURI, Vector portNames) 
{
529,530c534,535
<             
pw.println("            
ports.add(new 
javax.xml.namespace.QName(\""
<                     
+ portNames.get(i) + 
"\"));");
---
>             
pw.println("            
ports.add(new javax.xml.namespace.QName(\"" + 

>                     
namespaceURI + "\", \"" + portNames.get(i) + 
"\"));");

 

***** CVS exited normally with 
code 1 *****

 

 

 

 

 

 

 

 




 

 

 




-- 
Davanum Srinivas - http://webservices.apache.org/~dims/

Mime
View raw message