Rich client & web services, how to avoid unnecessary bloat
Hi!
Im creating a rich client with java. From this rich client I need to consume web services. Now im wondering which web services framework to use in the client. It seems that almost all (axis, xfire, jax-ws) frameworks require 10+ dependency jars.
This I dont like of course because the rich client is going to be distrubuted over network and I would like to keep it as slim as possible. 5-10 MB in dependencies is not ok when rest of the program is 100k...
I guess that everything is going to be different in Mustang (it should include all the needed jars) but i need to support older versions for next x years.
So if anyone knows any suitable solutions please post here. Thanks.
The problem here is the SOAP engine running on Oracle9iAS 1.0.2.2 is a lower version than that running on Oracle9iAS 9.0.3/OC4J 9.0.3.
To get them to interoperate (e.g. 1.0.2.2 calling 9.0.3), you would have to do the following:
1. Build your Web service in OC4J 9.0.3/JDev 9.0.3
2. Deploy to 9.0.3 environment
3. Build a Web service client on the 1.0.2.2 environment, not using any 9.0.3 libraries (see below for a link to a paper to do this)
Conversely if you wanted to call from a OC4J 9.0.3 Web service client to a Oracle9iAS 1.0.2.2 Web service, you would have to do the following:
1. Build your Web service on 1.0.2.2 using 1.0.2.2 libraries
2. Deploy this to a 1.0.2.2 environment
3. Build a client to the 1.0.2.2 Web service using the 9.0.3 libraries
The reason it likely is not working is that it looks like you are mixing two different generations of SOAP libraries.
See the link below for how to build and consume Web services using Oracle9iAS 1.0.2.2:
http://otn.oracle.com/tech/webservices/htdocs/soapr1/ExploreSOAP1022.html
At the end of that paper is a link to another paper showing how to use JDeveloper 3.2 to build a Web service for 1.0.2.2 - it shows how to use its libraries versus the libraries that came with 9.0.3.
Mike.
Similar Messages
-
Problem in writing a client web service from WSDL document
Hi,
I wrote a web service using .Net and a WSDL document. I tried after that to generate a client web service using Jdeveloper. but, the methode generated by Jdeveloper (in the stub) does not represente the original methode.
<?xml version = '1.0' encoding = 'windows-1252'?>
<!--Generated by the Oracle9i JDeveloper Web Services WSDL Generator-->
<!--Date Created: Fri Aug 09 13:59:52 EDT 2002-->
<definitions
name="CreditCard"
targetNamespace="http://tempuri.org/jdeveloper/generated/CreditCard/CreditCard"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://tempuri.org/jdeveloper/generated/CreditCard/CreditCard"
xmlns:ns1="http://tempuri.org/jdeveloper/generated/CreditCard/CreditCard/schema">
<types>
<schema
targetNamespace="http://tempuri.org/jdeveloper/generated/CreditCard/CreditCard/schema"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"/>
</types>
<message name="Validate0Request">
<part name="cardNumber" type="xsd:string"/>
<part name="lngDate" type="xsd:long"/>
</message>
<message name="Validate0Response">
<part name="return" type="xsd:boolean"/>
</message>
<portType name="CreditCardPortType">
<operation name="Validate">
<input name="Validate0Request" message="tns:Validate0Request"/>
<output name="Validate0Response" message="tns:Validate0Response"/>
</operation>
</portType>
<binding name="CreditCardBinding" type="tns:CreditCardPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Validate">
<soap:operation soapAction="" style="rpc"/>
<input name="Validate0Request">
<soap:body use="encoded" namespace="CreditCard.CreditCard" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output name="Validate0Response">
<soap:body use="encoded" namespace="CreditCard.CreditCard" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="CreditCard">
<port name="CreditCardPort" binding="tns:CreditCardBinding">
<soap:address location="http://localhost:8888/FirstSample-CreditCard-context-root/CreditCard.CreditCard"/>
</port>
</service>
</definitions>
Here The methode Validate consume two parameters : string and long
the generated stub look like :
public Vector Validate(Element requestElem) throws Exception
There is some one who have a solution ?
---------------------------------------My guess is that it is because .NET defaults to generating a document style interface whereas JDeveloper defaults to generating an RPC style interface. The end result is that JDeveloper wraps the document interface in something that looks document like - thus your client. To see how to handle this right now, check out this sample - you have to parse the XML:
http://otn.oracle.com/tech/webservices/htdocs/series/net/content.html
In the preview of JDeveloper 9.0.3 which is due quite soon - next few weeks roughly (crossing my fingers) - JDeveloper will wrap .NET document based Web services in a much more elegant wrapper - giving you exactly what you are looking for - a method called Validate rather than a vector of Elements.
What I don't understand in your sample, however, is that you have WSDL generated from JDeveloper versus WSDL generated from .NET. Did you also do an implementation of the validate method in Java too?
Mike. -
HTTPS and client invocation of web service - how to?
Got some web services that are document and document wrapped. Have generated the
client stubs using <clientgen> ANT task from BEA. Time to run a test against
the web services, but they have to run on HTTPS. When I invoked my web service
using the HTTPS://.... URL, I got this:
[java] 5) testQuoteStubs(com.arrow.arrowsoap.client.QuoteServiceClientTest)
weblogic.webservice.tools.wsdlp.WSDLParseException: Failed to retrieve WSDL from
https://localhost:7002/QuoteService?WSDL. Please check the URL and make sure
th
at it is a valid XML file [javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIF
ICATE - A corrupt or unuseable certificate was received.]
Cool. So how do I assign a default CERT to the https client? This is on a developer
instance of WL 8.1. I don't want to run the test on HTTP b/c I need to see how
it works with HTTPS (need to simulate a bona fide downstream user). Any help
is greatly appreciated.
Thanks
-JakeHi Jacob,
Take a look at the simple, one way SSL example [1] however it sounds
like you want to have the client provide a cert back to the server,
implying two-way SSL. You can find a two-way example here [2].
Regards,
Bruce
[1]
http://webservice.bea.com/simpleSSL.zip
[2]
http://webservice.bea.com/SSL2way.zip
Jacob Anderson wrote:
>
Got some web services that are document and document wrapped. Have generated the
client stubs using <clientgen> ANT task from BEA. Time to run a test against
the web services, but they have to run on HTTPS. When I invoked my web service
using the HTTPS://.... URL, I got this:
[java] 5) testQuoteStubs(com.arrow.arrowsoap.client.QuoteServiceClientTest)
weblogic.webservice.tools.wsdlp.WSDLParseException: Failed to retrieve WSDL from
https://localhost:7002/QuoteService?WSDL. Please check the URL and make sure
th
at it is a valid XML file [javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIF
ICATE - A corrupt or unuseable certificate was received.]
Cool. So how do I assign a default CERT to the https client? This is on a developer
instance of WL 8.1. I don't want to run the test on HTTP b/c I need to see how
it works with HTTPS (need to simulate a bona fide downstream user). Any help
is greatly appreciated.
Thanks
-Jake -
Web service handler could not called in client web service
Hi All,
I have two web service ServiceA & ServiceB and both implemented in weblogic.
The ServiceA is SSL enable and protocol is https which is not published by me.
The ServieB is my web service(wls8.1) and act as client for ServiceA.
My problem is when i hit my service, its not able set the handler when it call ServiceA but it is invoking the service and giving application exception like authentication error.
My service file:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.HandlerRegistry;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import weblogic.webservice.client.SSLAdapterFactory;
import weblogic.webservice.client.WLSSLAdapter;
public class HelloService {
String wsdl = "https://188.122.123.23/RemoetService?WSDL";
static {
SSLAdapterFactory factory = SSLAdapterFactory.getDefaultFactory();
WLSSLAdapter adapter = (WLSSLAdapter) factory.getSSLAdapter();
adapter.setTrustedCertificatesFile("D:\\lib\\certs
cacerts");
factory.setDefaultAdapter(adapter);
System.setProperty("weblogic.xml.encryption.verbose","true");
System.setProperty("weblogic.xml.signature.verbose","true");
System.setProperty("weblogic.webservice.verbose","true");
public String sayHello(String user) {
RemoteService_Impl service = new RemoteService_Impl(wsdl);
RemotePortType port = service.getRemoteServicePort1();
String namespace = service.getServiceName()
.getNamespaceURI();
QName portName = new QName(namespace,
"RemoteServicePortType");
HandlerRegistry reg = service.getHandlerRegistry();
List handlerList = new ArrayList();
Map map = new HashMap();
map.put("Username", "user1");
map.put("Password", "pwd1");
HandlerInfo info = new HandlerInfo();
info.setHandlerClass(WSClientHandler .class);
info.setHandlerConfig(map);
handlerList.add(info);
reg.setHandlerChain(portName,(List)handlerList);
RemoteServiceResponse = port.callMe(name);
My Handler file:
package com.test;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.Handler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
public class WSClientHandler implements Handler {
private HandlerInfo handlerInfo;
public WSClientAuthenticateHandler(){}
public void init(HandlerInfo hi) {
System.out.println("Handler init");
handlerInfo = hi;
public void destroy() {
System.out.println("Handler destroy method called");
handlerInfo = null;
public QName[] getHeaders() {
System.out.println("Handler Header method called");
try {
Map map = handlerInfo.getHandlerConfig();
QName[] headers = handlerInfo.getHeaders();
System.out.println(" Config :"+map);
for(int i=0;i<headers.length;i++) {
System.out.println(headers.getLocalPart()+" "+
headers.toString()+" "+headers.getNamespaceURI());
}catch(Exception e) {
e.printStackTrace();
return handlerInfo.getHeaders();
public boolean handleRequest(MessageContext mc) {
SOAPMessageContext smc = (SOAPMessageContext) mc;
System.out.println("Calling handler class.....................");
try {
SOAPEnvelope se = smc.getMessage().getSOAPPart().getEnvelope();
System.out.println("Calling handler class.....................");
SOAPHeader soapHeader = se.getHeader();
Name headerName = se.createName("Security","wsse","http://schemas.xmlsoap.org/ws/2002/07/secext");
SOAPHeaderElement headerElement = soapHeader.addHeaderElement(headerName);
SOAPElement element = headerElement.addChildElement(se.createName("UsernameToken", "wsse", "http://schemas.xmlsoap.org/ws/2002/07/secext"));
element.addChildElement(se.createName("Username", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testuser");
element.addChildElement(se.createName("Password", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testpwd");
System.out.println("Calling handler class.....................");
System.out.println("** Request: \n "se.toString()"\n");
}catch(SOAPException e) {
e.printStackTrace();
return true;
/** * Specifies that the SOAP response message be logged to a
* log file before the
* * message is sent back to the client application
* that invoked the Web service.
public boolean handleResponse(MessageContext mc) {
System.out.println("Handler Response method called");
SOAPMessageContext messageContext = (SOAPMessageContext) mc;
System.out.println("** Response: \n"messageContext.getMessage().toString()"\n");
return true;
/** * Specifies that a message be logged to the log file if a SOAP fault is
* * thrown by the Handler instance.
public boolean handleFault(MessageContext mc) {
SOAPMessageContext messageContext = (SOAPMessageContext) mc;
System.out.println("** Fault: \n"messageContext.getMessage().toString()"\n");
return true;
Please need help here.
Thanks in Advance,
ppsI have tested static client calling using handler simple above service and found the issues.
QName portName = new QName(namespace,
"*RemoteServicePortType*");
The above line code has created the issues,becuase in wsdl file ( given similar wsdl file).
<?xml version="1.0"; encoding="UTF-8"?>
<definitions name="HelloService"
targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
*<portType name="RemoteServicePortType">*
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:*RemoteServicePortType*">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
<port binding="tns:Hello_Binding" name="*RemoteServicePortType1*">
<soap:address
location="http://host1:8080/soap/servlet/rpcrouter"/>
</port>
<port binding="tns:Hello_Binding" name="*RemoteServicePortType2*">
<soap:address
location="http://host2:8080/soap/servlet/rpcrouter"/>
</port>
<port binding="tns:Hello_Binding" name="*RemoteServicePortType3*">
<soap:address
location="http://host3:8080/soap/servlet/rpcrouter"/>
</port>
<port binding="tns:Hello_Binding" name="*RemoteServicePortType4*">
<soap:address
location="http://host4:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
From the above WSDL, I have four port name (port binding="tns:Hello_Binding" name="*RemoteServicePortType1*) which is not matching with PortType (portType name="*RemoteServicePortType*")
even i have iterated from getPorts() method and used to invoke the service.But handler was not calling when i invoke.
Please guide me here how i specify correct portname which can call Handler class also.
Thanks in advance,
pps -
Web service handler could not registered/called in client web service
Hi Expert,
I have two web service ServiceA & ServiceB and both implemented in weblogic.
The ServiceA is SSL enable and protocol is https which is not published by me.
The ServieB is my web service(wls8.1) and act as client for ServiceA.
My problem is when i hit my service, its not able set the handler when it call ServiceA but it is invoking the service and giving application exception like authentication error.
My service file:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.HandlerRegistry;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import weblogic.webservice.client.SSLAdapterFactory;
import weblogic.webservice.client.WLSSLAdapter;
public class HelloService {
String wsdl = "https://188.122.123.23/RemoetService?WSDL";
static {
SSLAdapterFactory factory = SSLAdapterFactory.getDefaultFactory();
WLSSLAdapter adapter = (WLSSLAdapter) factory.getSSLAdapter();
adapter.setTrustedCertificatesFile("D:\\lib\\certs\\cacerts");
factory.setDefaultAdapter(adapter);
System.setProperty("weblogic.xml.encryption.verbose","true");
System.setProperty("weblogic.xml.signature.verbose","true");
System.setProperty("weblogic.webservice.verbose","true");
public String sayHello(String user) {
RemoteService_Impl service = new RemoteService_Impl(wsdl);
RemotePortType port = service.getRemoteServicePort1();
String namespace = service.getServiceName()
.getNamespaceURI();
QName portName = new QName(namespace,
"RemoteServicePortType");
HandlerRegistry reg = service.getHandlerRegistry();
List handlerList = new ArrayList();
Map map = new HashMap();
map.put("Username", "user1");
map.put("Password", "pwd1");
HandlerInfo info = new HandlerInfo();
info.setHandlerClass(WSClientHandler .class);
info.setHandlerConfig(map);
handlerList.add(info);
reg.setHandlerChain(portName,(List)handlerList);
RemoteServiceResponse = port.callMe(name);
My Handler Class:
package com.test;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.Handler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
public class WSClientHandler implements Handler {
private HandlerInfo handlerInfo;
public WSClientAuthenticateHandler(){}
public void init(HandlerInfo hi) {
System.out.println("Handler init");
handlerInfo = hi;
public void destroy() {
System.out.println("Handler destroy method called");
handlerInfo = null;
public QName[] getHeaders() {
System.out.println("Handler Header method called");
try {
Map map = handlerInfo.getHandlerConfig();
QName[] headers = handlerInfo.getHeaders();
System.out.println(" Config :"+map);
for(int i=0;i<headers.length;i++) {
System.out.println(headers.getLocalPart()+" "+
headers[i].toString()+" "+headers[i].getNamespaceURI());
}catch(Exception e) {
e.printStackTrace();
return handlerInfo.getHeaders();
public boolean handleRequest(MessageContext mc) {
SOAPMessageContext smc = (SOAPMessageContext) mc;
System.out.println("Calling handler class.....................");
try {
SOAPEnvelope se = smc.getMessage().getSOAPPart().getEnvelope();
System.out.println("Calling handler class.....................");
SOAPHeader soapHeader = se.getHeader();
Name headerName = se.createName("Security","wsse","http://schemas.xmlsoap.org/ws/2002/07/secext");
SOAPHeaderElement headerElement = soapHeader.addHeaderElement(headerName);
SOAPElement element = headerElement.addChildElement(se.createName("UsernameToken", "wsse", "http://schemas.xmlsoap.org/ws/2002/07/secext"));
element.addChildElement(se.createName("Username", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testuser");
element.addChildElement(se.createName("Password", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testpwd");
System.out.println("Calling handler class.....................");
System.out.println("** Request: \n "+se.toString()+"\n");
}catch(SOAPException e) {
e.printStackTrace();
return true;
/** * Specifies that the SOAP response message be logged to a
* log file before the
* * message is sent back to the client application
* that invoked the Web service.
public boolean handleResponse(MessageContext mc) {
System.out.println("Handler Response method called");
SOAPMessageContext messageContext = (SOAPMessageContext) mc;
System.out.println("** Response: \n"+messageContext.getMessage().toString()+"\n");
return true;
/** * Specifies that a message be logged to the log file if a SOAP fault is
* * thrown by the Handler instance.
public boolean handleFault(MessageContext mc) {
SOAPMessageContext messageContext = (SOAPMessageContext) mc;
System.out.println("** Fault: \n"+messageContext.getMessage().toString()+"\n");
return true;
Please need help here.
Thanks in Advance,
ppsI have tested static client calling using handler simple above service and found the issues.
QName portName = new QName(namespace,
*"RemoteServicePortType");*
The above line code has created the issues,becuase in wsdl file ( given similar wsdl file).
<?xml version="1.0"; encoding="UTF-8"?>
<definitions name="HelloService"
targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="*RemoteServicePortType*">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:*RemoteServicePortType*">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
+<port binding="tns:Hello_Binding" name="*RemoteServicePortType1*">+
+<soap:address+
location="http://host1:8080/soap/servlet/rpcrouter"/>
+</port>+
+<port binding="tns:Hello_Binding" name="*RemoteServicePortType2*">+
+<soap:address+
location="http://host2:8080/soap/servlet/rpcrouter"/>
+</port>+
+<port binding="tns:Hello_Binding" name="*RemoteServicePortType3*">+
+<soap:address+
location="http://host3:8080/soap/servlet/rpcrouter"/>
+</port>+
+<port binding="tns:Hello_Binding" name="*RemoteServicePortType4*">+
+<soap:address+
location="http://host4:8080/soap/servlet/rpcrouter"/>
+</port>+
</service>
</definitions>
From the above WSDL, I have four port name (port binding="tns:Hello_Binding" name="*RemoteServicePortType1*) which is not matching with PortType (portType name="*RemoteServicePortType*")
even i have iterated from getPorts() method and used to invoke the service.But handler was not calling when i invoke.
Please guide me here how i specify correct portname which can call Handler class also.
Thanks in advance,
pps -
Error while running client web service
how do i solve this error..
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.net.ConnectException: Connection timed out: connect
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at DefaultNamespace.CalcSoapBindingStub.getOutput(CalcSoapBindingStub.java:110)
at DefaultNamespace.CalcProxy.getOutput(CalcProxy.java:50)
at DefaultNamespace.calcClient.executeClient(calcClient.java:54)
at DefaultNamespace.calcClient.main(calcClient.java:14)
{http://xml.apache.org/axis/}hostname:romil-system
java.net.ConnectException: Connection timed out: connect
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at DefaultNamespace.CalcSoapBindingStub.getOutput(CalcSoapBindingStub.java:110)
at DefaultNamespace.CalcProxy.getOutput(CalcProxy.java:50)
at DefaultNamespace.calcClient.executeClient(calcClient.java:54)
at DefaultNamespace.calcClient.main(calcClient.java:14)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
... 13 morehello, please i attend too developpe a web service client in java to access to a webservice server PHP, I use axis api, but when i launch my web service client, I receive, all content of the wsdl file from server. please somebody can I help me
-
Issue in accessing Client Web Service 401 authentication error
Hi,
I have a requirement where i need to call a web service from SOA composite. When i deploy the service on SOA Server and try accessing it i get below error
**oracle.fabric.common.FabricException: Cannot read WSDL "{http://www.service-now.com}ServiceNow_u_incident" from Metadata Manager.: Error in getting XML input stream: https://XXXXXXX.service-now.com/incident.do?WSDL: Response: '401: Unauthorized' for url: 'https://XXXXXXXX.service-now.com/incicdent.do?WSDL'**
If i go from broweser and hit the url it asks for my ldap / windows credential.
My question is how to i pass these credentials from Composite.
sample service
https://demo.service-now.com/incident.do?WSDL
ShirishTo pass HTTP Basic Auth from an External Reference in a composite_
Set up in the EM
1. Create the credentials in the EM
- In the EM Weblogic Domain > right click the domain name
- Choose Security > Credentials
2. Create an oracle.wsm.security map
This is where the http token details are held
- If the oracle.wsm.security does not exist create one (Create Map)
- call it oracle.wsm.security
3. Create the Key
- Click create Key
- Enter the following values
Select Map -> oracle.wsm.security
Key -> Key name
Type -> Password
Username -> << basic auth username required >>
Password -> << basic auth password required >>
Description -> Clear text description
Note : Make the key name specific to the service you are accessing i.e. basic.credentials.sitea.demo
Secure the Reference Partner Link
In JDeveloper
Open the composite that needs securing
Right click on the external reference
Select Configure WS Policies
For Security, click the + button
Select the oracle/wss_http_token_client_policy entry
Select this and click the pencil button to edit the Override Value.
In the override value column (csf-key), enter the credential key name you wish to use. i.e. basic.credentials.sitea.demo
Deploy the service, and this will now be secured against the Basic Auth.
This does not address SSO / Windows AD integration from the client, this is where a Web Service is protected by basic auth. If you need to integrate with AD as SSO etc then you will need to configure Kerberos. That is a much bigger explaination that you will probably find on the Net.
Good luck
Edited by: rodhiggins on 28/05/2013 22:52 -
RFC function as a Web service - how to make wsdl type names unique
Hello,
We have a RFC function module, converted into a web service named ZVIEW_AGREEM, which works perfectly. Note that we only have a basic CRM system (Basis 7.31 SP 11), we don't have PI.
There is a client request to create a new version of this web service, named ZVIEW_AGREEM_2 : there is a new field "output_parameter2" in the response. The response type has XSD type named "VAGResult" (that we entered manually in the service definition).
The client also asked us to keep the old web service so that to be able to switch to the new one at a future date.
So, we duplicated the function module, duplicated the DDIC structure, and inserted the requested field, and then we made the web service.
It's okay except that the client complains that his software doesn't accept the WSDL, because we kept the same external type name "VAGResult", and it's different between the 2 web services (in the second, there is the extra "output_parameter2"). Both are assigned the standard SAP namespace urn:sap-com:document:sap:rfc:functions.
Do you know if there is a way to make SAP control the unicity of external type names to avoid having WSDL types with the same name and different structures?
Thanks.
Sandra
Attached is the WSDL of ZVIEW_AGREEM_2; ZVIEW_AGREEM is exactly the same but doesn't have "output_parameter2".Thanks.
But the question is more about the fact that we may name a type as we want, SAP does not check (VAGResult in the screen capture below, which becomes <complexType name="VAGResult"... in the WSDL). It may be the same name as a type in another Web Service, both types may have completely different structures. It's a problem from a "philosophical" perspective, as these types share the same namespace "urn:sap-com:document:sap:rfc:functions"; the client software doesn't accept that, we have to rename it; I'd like to know whether SAP proposes a way to prevent choosing a name if it's already chosen for another type of different content. -
Consuming Web Service ( How to pass multiple inputs and retrieve dataset)
I am new to ADF and Web service.
In the current project, I have to consume a web service ( through WSDL).
Created the pages as per the following tutorials.
http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_14/jdtut_11r2_14.html
As per the steps 11, 12 mentioned in the document, I have mutiple fields so I added these code.
Though in the tutorial, it has zip code as the input parameter, but I have three input parameters such as classCode, annualPayroll & fullTimeEmployees.
How to include there input parameters which should be passed to the results page once the command button "Calculate" as mentioned below is pressed.
<p xmlns="http://www.w3.org/1999/xhtml">
<af:commandButton
text="Calculate" disabled="#{!bindings.calculateBasePremium.enabled}"
id="cb2" action="show"/>
<af:setPropertyListener from="#{bindings.classCode.inputValue}"
to="#{pageFlowScope.classCode}"
type="action"/>
<af:setPropertyListener from="#{bindings.annualPayroll.inputValue}"
to="#{pageFlowScope.annualPayroll}"
type="action"/>
<af:setPropertyListener from="#{bindings.fullTimeEmployees.inputValue}"
to="#{pageFlowScope.fullTimeEmployees}"
type="action"/>
</p>
But JDeveloper is throwing error.
Thanks in advance for your help.
BibsQuestions is how do you pass the variables from the page to the next page.
I have added code so that when the button command is presses, based on the action event, it will be passed to the next page.
When I was adding the Listener event for the items for page flow, it was not accepting action and was throwing error.
Here is the error message:
arget URL -- http://127.0.0.1:7101/ratingwscall-ViewController-context-root/faces/InputPage
<ViewHandlerImpl> <_checkTimestamp> Apache Trinidad is running with time-stamp checking enabled. This should not be used in a production environment. See the org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION property in WEB-INF/web.xml
<LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RESTORE_VIEW 1
javax.faces.view.facelets.FaceletException: Error Parsing //C:/Documents and Settings/b4d9y4x/Application Data/JDeveloper/system11.1.2.2.39.61.83.1/o.j2ee/drs/ratingwscall/ViewControllerWebApp.war/InputPage.jsf: Error Traced[line: 97] <Line 97, Column 33>: XML-20121: (Fatal Error) End tag does not match start tag 'af:setPropertyListener'.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:394)
at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:377)
at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:319)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:92)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:168)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getMetadataFacelet(DefaultFaceletCache.java:135)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getMetadataFacelet(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:252)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:201)
at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:114)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._restoreView(LifecycleImpl.java:749)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:346)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:207)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:173)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:125)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
<LifecycleImpl> <_reportFailureForMissingViewRoot> ADF_FACES-30179:For more information, please see the server's error log for an entry beginning with: The UIViewRoot is null. Fatal exception during PhaseId: RESTORE_VIEW 1.
javax.faces.view.facelets.FaceletException: Error Parsing //C:/Documents and Settings/b4d9y4x/Application Data/JDeveloper/system11.1.2.2.39.61.83.1/o.j2ee/drs/ratingwscall/ViewControllerWebApp.war/InputPage.jsf: Error Traced[line: 97] <Line 97, Column 33>: XML-20121: (Fatal Error) End tag does not match start tag 'af:setPropertyListener'.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:394)
at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:377)
at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:319)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:92)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:168)
at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94)
at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getMetadataFacelet(DefaultFaceletCache.java:135)
at com.sun.faces.facelets.impl.DefaultFaceletCache.getMetadataFacelet(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:252)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:201)
at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:114)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._restoreView(LifecycleImpl.java:749)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:346)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:207)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:173)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:125)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:468)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) -
11G - XDB Native Web Services - how to create a web service proxy
Hi,
I am working on XDB Native web Services (http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_web_services.htm#CHDDBCHB). I want to create a proxy web service for orawsv service (http://server:port/orawsv?wsdl), which is protected by an user/password
In Jdeveloper 10133:
+ copy orawsv wsdl (http://server:port/orawsv?wsdl) in local file
+ create a proxy web service form the local wsdl (from the wizard)
+ implement the client (http://www.oracle.com/technology/obe/11gr1_db/datamgmt/xmldb2_b/xmldb2_b.htm)
==> OK
In Jdeveloper 11g
+ copy orawsv wsdl (http://server:port/orawsv?wsdl) in local file
+ create a proxy web service form the local wsdl (from the wizard)
+ how to implement the client : there is no method to set a password
any ideas?
Thanks for your help,
Cyryl
Edited by: cbalmati on Oct 21, 2008 6:26 AMI'm working on getting a proxy web service working in 11g and the contents of this thread is close to answering my question.
The web service proxy is accessing a service that requires a SOAP Security header.
In looking at the previous post, I thought that by using the BindingProvider API I could add the security settings. But when I invoke the proxy I consistently get the following error response from the (PeopleSoft) web service: "com.sun.xml.ws.client.ClientTransportException: request requires HTTP authentication: Unauthorized'
In contrast to that error, when I use JDeveloper's HTTP Analyzer, I get a successful response from the web service. Below is what the raw HTTP looks like:
POST https://isiswebdev.services.wisc.edu:7002/PSIGW/PeopleSoftServiceListeningConnector HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Host: isiswebdev.services.wisc.edu:7002
SOAPAction: "CI_U_FA_CSA_STDTA_CI_G.V2"
Content-Length: 548
X-HTTPAnalyzer-Rules: 1
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns2="http://xmlns.oracle.com/Enterprise/Tools/schemas/M183895.V1">
<env:Header>
<ns1:Security>
<ns1:UsernameToken>
<ns1:Username>UserName</ns1:Username>
<ns1:Password>XXXXXXX</ns1:Password>
</ns1:UsernameToken>
</ns1:Security>
</env:Header>
<env:Body>
<ns2:Get__CompIntfc__U_FA_CSA_STDTA_CI>
<ns2:EMPLID>012345678912</ns2:EMPLID>
</ns2:Get__CompIntfc__U_FA_CSA_STDTA_CI>
</env:Body>
</env:Envelope>
Here's the Java code that I'm using to try to make the same call:
public void callIWebservice(String emplId){
cSA_STDNT_DATA = new CSA_STDNT_DATA();
CI_U_FA_CSA_STDTA_CI_PortType port = cSA_STDNT_DATA.getCI_U_FA_CSA_STDTA_CI_Port();
Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "UserName");
requestContext.put(BindingProvider.PASSWORD_PROPERTY,"XXXXXXX");
GetCompIntfcUFACSASTDTACITypeShape CiType = new GetCompIntfcUFACSASTDTACITypeShape();
EMPLIDTypeShape emplIDType = new EMPLIDTypeShape();
emplIDType.setValue(emplId);
CiType.setEMPLID(emplIDType);
try {
GetCompIntfcUFACSASTDTACIResponseTypeShape response = port.getDATA(CiType);
System.out.println(response.getCUMGPA());
} catch (M464939V1 e) {
System.out.println(e.getFaultInfo());
But, alas, I just get the ClientTransportException.
Is the Bindingprovider interface the correct way to add the soap security headers? Or am I following the wrong path?
Any help will be greatly appreciated. -
Web Services: How to get the username token?
Hello everybody,
I wrote an EJB, Exposed it as a web service.
I'm using encryption+username as the inbound policy.
The client is adding a username token to the message.
I understood that the userpassword are checked automatically and I don't need to implement that myself but I need the userpassword from this token for another reason.
How can I get this information in the EJB's code?
Thanks, Adi.You can get the user from Session Bean's context.
myContext.getCallerPrincipal();
I think you cannot get the password. That way, it would be easy to disguise your WS as another one you could want to crack.
Regards. -
PL/SQL web service - how to use XML schema to define inputs/outputs?
Hello,
let us say I want to publish a PL/SQL web service. The package spec that I want to expose is:
CREATE OR REPLACE PACKAGE myWebService AS
FUNCTION loadResults(
username IN VARCHAR2,
password IN VARCHAR2,
resultData IN XMLType)
RETURN XMLType;
END;When I use JDeveloper's wizard to publish my PL/SQL web service, the resulting WSDL contains this:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://uk/co/weatherbys/aapws/AAPWS.wsdl/types/"
targetNamespace="http://uk/co/weatherbys/aapws/AAPWS.wsdl/types/"
elementFormDefault="qualified">
<element name="loadresultsElement">
<complexType>
<sequence>
<element name="username" type="string" nillable="true"/>
<element name="password" type="string" nillable="true"/>
<element name="resultdata" nillable="true">
<complexType>
<sequence>
<any/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name="loadresultsResponseElement">
<complexType>
<sequence>
<element name="result" nillable="true">
<complexType>
<sequence>
<any/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>It is specifying that anything at all can be passed in and out from the two XMLType arguments, which is fair enough: it has no way of knowing what I am expecting and what I shall return.
My question is, how do I tell JDeveloper that actually I want either or both of those XMLTypes to conform to a particular XML schema?You cannot format the date as a string, unless you do the conversion on the PL-SQL side, before you use it in your WebService mapping. It should be handled as a string.
The only way to convert the XML from SOAP, using this encoding, into literal XML is to apply XSLT to the payload. Not sure why you would like to do this, as the payload should be consumed by another SOAP-awared stack.
Hope this helps,
Eric -
XI 3.0 and external Java client/web service
Hello,
I'm desperately tryin' to get an external system to work together with XI 3.0.
The setup is quite simple:
The external system is nothing but a simple Java program sending SOAP-based requests to a webservice. It is based on AXIS and is running satisfyingly when connecting directly to an appropriate Tomcat/AXIS-based web service, see the following communication.
-- local request
POST /axis/VAPService.jws HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.1
Host: 192.168.1.2:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://localhost/SOAPRequest"
Content-Length: 422
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<SOAPRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAPDataIn xsi:type="xsd:string">890000001</SOAPDataIn>
</SOAPRequest>
</soapenv:Body>
</soapenv:Envelope>
-- local response
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=DFD7A00A244C18A058FCB52A8321A167; Path=/axis
Content-Type: text/xml;charset=utf-8
Date: Mon, 23 Aug 2004 06:52:47 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<SOAPRequestResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAPRequestReturn xsi:type="xsd:int">1</SOAPRequestReturn>
</SOAPRequestResponse>
</soapenv:Body>
</soapenv:Envelope>
Now I have designed and configured simple business scenarios with XI 3.0 (synchronous as well as asynchronous). The only response I get from XI when the Java client connects ist the following:
-- remote request
POST /sap/xi/engine?type=entry HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.1
Host: <host>:<port>
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://soap.org/soap"
Content-Length: 424
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<SOAPRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAPDataIn xsi:type="xsd:string">890000001</SOAPDataIn>
</SOAPRequest>
</soapenv:Body>
</soapenv:Envelope>
-- remote response
HTTP/1.0 500 HTTP standard status code
content-type: text/xml
content-length: 1493
content-id: <[email protected]>
server: SAP Web Application Server (1.0;640)
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Header>
</SOAP:Header>
<SOAP:Body>
<SOAP:Fault xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP:mustUnderstand="1">
<SOAP:faultcode>Client</SOAP:faultcode>
<SOAP:faultstring></SOAP:faultstring>
<SOAP:faultactor>http://sap.com/xi/XI/Message/30</SOAP:faultactor>
<SOAP:faultdetail>
<SAP:Error xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP:mustUnderstand="1">
<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSER">UNEXSPECTED_VALUE</SAP:Code>
<SAP:P1>Main/@versionMajor</SAP:P1>
<SAP:P2>000</SAP:P2>
<SAP:P3>003</SAP:P3>
<SAP:P4></SAP:P4>
<SAP:AdditionalText></SAP:AdditionalText>
<SAP:ApplicationFaultMessage namespace=""></SAP:ApplicationFaultMessage>
<SAP:Stack>XML tag Main/@versionMajor has the incorrect value 000. Value 003 expected
</SAP:Stack>
</SAP:Error>
</SOAP:faultdetail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
I made sure the business service in the integration directory is named SOAPRequest and is using SOAP as the communication channel. As the adapter engine I chose the integration server, since it is the only option, although the SOAP adapter framework is installed (according to the SLD) and deactivated any options like header and attachment.
Upon facing the above response I also tried any kind of derivative with inserting the described tag/attribute/element versionMajor, but to no avail.
My questions are:
What do I have to do additionally to get the whole thing running, i.e. configure my external systems in the SLD, providing proxy settings?
Do I have to create web services within the Web AS (which provide some kind of facade to the XI engine using the proxy generation) and connect to these instead of directly addressing the integration engine (I'm using the URL http://<host>:<port>/sap/xi/engine?type=entry, but I also tried http://<host>:<port>/XISOAPAdapter/MessageServlet?channel=:SOAPRequest:SOAPIn, this led to a 404 not found error)?
What settings do I have to provide to see the messages the client is sending, when looking into the runtime workbench it seems as if there are no messages at all - at least from my client?
Hopefully somebody might help me out or least provide some information to get me going.
Thanks in advance.
Best regards,
T.HrastnikHello Oliver,
all information I gathered so far derives from the online help for XI 3.0, to be found under http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm. There You'll find - in the last quarter of the navigation bar on the left side - sections describing the adapter engine alonside the SOAP adapter.
Additionally I went through almost all postings in this forum.
This alonside the mandatory trial-and-error approach (I did a lot of it up to date) led me to my current status, i.e. so far I haven't found any kind of (simple) tutorial or demo saying "If You want to establish a web service based connection via SOAP between external applications and XI first do this, then that ...", sadly enough :-(.
Hope that helps, any questions are always welcome, I'll try my best to answer them ;-).
Best regards,
Tomaz -
Web Services - How to create a websevice in XI/PI
Hi,
I have zero knowledge on webservices. Can someone help me understand what a webservice is and give me a step by step guide on how to create a sender and receiver webservice.
Thanks in advance.
Cheers,
SHi
Search on SDN, you will get blogs and document.
WebService is an application on the Web/Internet. Wheneever Service is requested by the user, it provides the service ( Request/Response)
look some blog Create Web Service
Using the SOAP inbound channel of the Integration Engine
Web Service Senario
RFC -> XI -> WebService - A Complete Walkthrough (Part 1)
Invoke WebServices in XI
Invoke Webservices using SAPXI
WebService Scenario
SYNCHRONOUS SOAP TO JDBC - END TO END WALKTHROUGH
https://www.sdn.sap.com/irj/sdn/weblogsblog=/pub/wlg/7729
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d23cbe11-0d01-0010-5287-873a22024f79
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5474f19e-0701-0010-4eaa-97c4f78dbf9b -
Axis Client Web Service call problem: java.io.IOException: Stream closed
Hi, I tried to call a webservice from Axis Client, and I encounter the following error. Do you guys have any idea what actually happens?
Please help, I am newbie in web services.
==============Root Cause===============
AxisFault
faultCode: { h t t p : / / schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: Stream closed
faultActor:
faultNode:
faultDetail:
{h t t p : / / xml.apache.org/axis/}stackTrace:java.io.IOException: Stream closed
at java.io.BufferedInputStream.ensureOpen(BufferedInputStream.java:120)
at java.io.BufferedInputStream.read(BufferedInputStream.java:270)
at org.apache.commons.httpclient.ContentLengthInputStream.read(ContentLengthInputStream.java:170)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:108)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:127)
at org.apache.commons.httpclient.HttpMethodBase.getResponseBody(HttpMethodBase.java:688)
at org.apache.commons.httpclient.HttpMethodBase.getResponseBodyAsString(HttpMethodBase.java:796)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:224)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
{h t t p : / / xml.apache.org/axis/}hostname:compname
java.io.IOException: Stream closed
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:301)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: java.io.IOException: Stream closed
at java.io.BufferedInputStream.ensureOpen(BufferedInputStream.java:120)
at java.io.BufferedInputStream.read(BufferedInputStream.java:270)
at org.apache.commons.httpclient.ContentLengthInputStream.read(ContentLengthInputStream.java:170)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:108)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:127)
at org.apache.commons.httpclient.HttpMethodBase.getResponseBody(HttpMethodBase.java:688)
at org.apache.commons.httpclient.HttpMethodBase.getResponseBodyAsString(HttpMethodBase.java:796)
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:224)
... 17 more I am calling through proxy, the setting is as follows:
System.setProperty("https.proxyHost", [proxyname here]);
System.setProperty("https.proxyPort", [proxyport here]);
System.setProperty("http.proxyHost", [proxyname here]);
System.setProperty("http.proxyPort", [proxyport here]);Are there any problems showing up in the server's log?
Maybe you are looking for
-
Help, i've upgraded my 4S to iO 7, but iTunes no longer sees the phone
I have just upgraded to iOS 7, and now when i plug my phone into my Windows 7 laptop, iTunes (up to date) does not see the phone at all. I can plug my iPod in and it is recognized just fine. I have told my phone several times i trust the laptop. I
-
Where are the downloads?
Why is it so hard to find downloads for older editions of photoshop? I have CS5 Extended on old laptop that crashed so I've taken over my wife's laptop that has not cd drive, so I need to download the program. It is virtually impossible to find on
-
I need to reinstall a CS3 PC version on a new Mac
I had a crash on myPC and lost my Photoshop CS3 program that I bought from Adobe and downloaded. I lost faith in the PC because of viruses and general problems and switched to a Mac. Adobe has me going in circles and the tech support keeps on sending
-
hi all hero's, i have a query related to spl bus process. while configuration of spl bus process there is no any problem and while it comes to billing a ticket will rise and its integration with fi-sd and i e missing data G/L account. can any body s
-
Safari bookmarks every page I visit. Why does it do this? How can I stop it?
Safari bookmarks every web site I visit. Why? How can I stop it doing this?