Developing dynamic WebServices,,
Hi,
There is a webservices which I can used across my application in morethan one place .The webservices will expect 5 input and give 3 output.When I call the webservices I some times I will give 3 input and some times I will give 4 inputs.
So is there a possibility where I can develope dynamic webservices.Which will expect different number of inputs and process??
Thanks,
Renga.S.
Hi,
I found the solution for developing dynamic webservices.If the webservices has five input but when we consume it ,we might not give exact five input ,in this case you can make the fields as optional in XSD and Inside the webservices you can have a check like if the fields is not null then implement the logic..
Thanks,
Renga.S.
Similar Messages
-
Hey ,
I have an application which requires to talk to 2 different published webservices
from 2 different systems. Now instead od designing static webservice clients for
each of these systems(which would involve having separate proxy jars etc),
I am planning to design a dynamic webservice locator and invoker....
I know that we can have webservice clients which are dynamic to the extent that
we can create proxy objects at runtime once we know the endpoint WSDL..
eg:
ServiceFactory factory = ServiceFactory.newInstance();
QName serviceName =new QName targetNamespace,"net.xmethods.services.stockquote.StockQuoteService");
QName portName = new QName(targetNamespace,"net.xmethods.services.stockquote.StockQuotePort");
QName operationName = new QName("urn:xmethods-delayed-quotes","getQuote");
URL wsdlLocation = new URL("http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl");
// create service
Service service = factory.createService(wsdlLocation, serviceName);
// create call Call call = service.createCall(portName, operationName);
My question on this...if I have a dynamic approach like the above what are the
pros and cons..I guess it would surely have more overhead compared to a static
client...?
Secondly ,is it even feasible to design a dynamic client in such a way that the
endpoint WSDL could also be an unknown and my generic client would also locate
the end-point dynamically and then invoke dynamic calls as above...
If anybody can share their insights on a dynamic webservice client , I would really
appreciate it...
Thanx,
Krish
KRISH.VENKATARAMAN
Senior Technology Analyst
Bank of America Corp.
Email:[email protected]Hi Krish,
In WSDL, the data types passed between applications are described in schema
and
this is key for interop. I dont know of any standard/natural mapping for
values types,
object reference, etc in a binary protocol (like JRMP, IIOP) to schema. For
eg:
say there is serializable object Foo, which is the argument to a remote
method in RMI.
Object Foo can have data + behavior. It may be possible (not always, i
think) to
describe the data in Foo as schema, but how can one describe the behavior?
So, if WSDL is the only contract between the server and client (key
requirement
for interop), then IMHO RMI can not be described by WSDL.
Also, WSDL was designed for future extensions and does not map well to a
programming API. WSIF trys to expose all the gory WSDL details and its apis
are very clumsy.
These were the two main reason to vote it down at JAX-RPC EC.
I am attaching an example that shows, how to introspect WSDL and invoke
a method using JAX-RPC (with little extension to the std api). Also, it
shows
how to handle complex type without data binding. Will this solve your
problem?
I am very interested to get your feedback on this.
BTW, This example will only work with WLS 8.1.
regards,
-manoj
"Krish Venkataraman" <[email protected]> wrote in message
news:[email protected]...
>
>
Mike...thanx for the inputs...
As per ur suggestion...I have taken this offline and mailed u [email protected]
also....lemme know if thatz cool...
there are my observations..lemme know what am i missing..
1) The main difference I see between JAX-RPC and WSIF, is that with WSIFclient
it is easier to port to services talking
via other ports like RMI,IIOP etc...where as JAX-RPC is understandsonly SOAP(atleast
for now).
2) Lets assume for the time-being that I would be interested only to talkto services
talking SOAP.
Then why do I need WSIF ?
3) I can have a JX-RPC client , I can have a similar generic(reflection)code
for built-in/primitive datatypes and for
complex datatypes I anywayz would be doing the same thing(requiringthe java
representation of the datatype unless I use
something like JROM or something which I do not want to) in JAX-RPC orWSIF.
>
4) As far as syncronous or asyncronous invocation is concerned , myunderstanding
is that my client call is going to remain the
same ..the service provider is going to either use message-oriented orRPC
on his side...
Again assuming that I am interested only with services talking SOAP, thiscould
be my generic client invocation design
Background is that my client is going to run from within a WLS70sp1
Actors:
a) webSevice1ClientSessionBean : This will be a stateless session beanwhich might
have knowledge about webSevice1's end-point ,
complex dataTypes if any.
(There would be other session beans like this which would haveknowledge about
other specific webservice)
b) GenericWebServiceInvoker : This will have knowledge about everythingwithin
the webservice-standards/protocols.
eg:
//set weblogic ServiceFactory
System.setProperty( "javax.xml.rpc.ServiceFactory",
"weblogic.webservice.core.rpc.ServiceFactoryImpl" );
//create service factory
ServiceFactory factory = ServiceFactory.newInstance();
//define qnames
String targetNamespace = "http://soapinterop.org/";
QName serviceName = new QName( targetNamespace, "SimpleTest" );
QName portName = new QName( targetNamespace, "SimpleTestSoap" );
QName operationName = new QName( "http://soapinterop.org/",
"echoStruct" );
//create service
Service service = factory.createService( serviceName );
TypeMappingRegistry registry = service.getTypeMappingRegistry();
TypeMapping mapping = registry.getTypeMapping(
SOAPConstants.URI_NS_SOAP_ENCODING );
mapping.register( SOAPElement.class,
new QName( "http://soapinterop.org/xsd", "SOAPStruct" ),
new SOAPElementCodec(),
new SOAPElementCodec() );
//create call
Call call = service.createCall();
//set port and operation name
call.setPortTypeName( portName );
call.setOperationName( operationName );
call.addParameter( "inputStruct",
new QName( "http://soapinterop.org/xsd", "SOAPStruct" ),
ParameterMode.IN);
All parameter values specific to a particular webservice likeQName,targetNameSpace
etc will be sent to this invoker by
webSevice1ClientSessionBean. The GenericWebServiceInvoker will invokethe
service
(using reflection for primitive/builtin types) and alwayz accept anobject
from the service operation and just return
that "object" back the webSevice1ClientSessionBean.ThewebSevice1ClientSessionBean
will know how to interpret the
complexdataType or builtInDatatype whichever is returned.TheGenericWebServiceInvoker
will not have any application
specific knowledge...it will just have knowledge about how todiscover, invoke
any SOAP webservice...
Somewhere in the beginning of GenericWebServiceInvoker I will use JAXRto
discover services from UDDI if needed.
This way I will have a generic webservice client invocation frameworkwhich
can invoke any service which talks SOAP.
Now lemme know how the above picture looks and what is missing...
I have some questions :
1) Incase of complex dataTypes, I will have itz XML representation inthe
publisher's WSDL and the publisher will give
me the java representation of the complex dataType.But how does myclient
JAX-RPC know how to map the XML
to the java representation unless I specify the mapping somewhere?Does
the TypeMapping/TypeMappingRegistry do this ?
Thanx,
Krish
"Michael Wooten" <[email protected]> wrote:
You know, it's really cool to hear guys thinking things through, before
they "jump
on a bandwagon" :-)
Anyway, I suspect that the performance overhead of doing reflection,
and heavy
server-side code intrusion, is what has made a lot of developers balk
at using
WSIF. I would check out the IBM newsgroups, to see what the general
developer
sentiment is on WSIF.
To achieve any sort of decent performance with JAX-RPC based webservices,
you
need to do a fair amount of optimization/tuning on both the client and
server
side. I recommend setting up your own "lab environment" for doing these,
so you
can see exactly what's making things improve/degrade. If you are really
interested
in this topic, we should talk about it "off-line".
In general, the more "dynamic" things are on the client side, the slower
things
will be, the more you really need to question if you really need them
to be dynamic
:-) Does making it "dynamic" really offer something that you can't get
from a
"static" version? If not, who's really benefiting here. I mean, com'n.
All you
really want to do is invoke an operation, right? By the time you get
all the information
it takes to do a dynamic invocation (i.e. port, target namespace, data
type for
input argument, serializer/deserializer for each non-built-in data type,
etc.),
your client looks like you are trying to boot a PDP-11! LOL! For those
of you
who don't know what a PDP-11 is, it's an early computer (from the'60-'70),
that
you actually had to use switches to create the "binary instructions"
to boot it
up!
From a PM's (product manager's) perpective, I wouldn't even let thedevelopers
modify "working" EJBs to expose them as a web service. Alarm bells should
go off
in your head, if you have to modify existing server-side code to expose
a company
asset as a web service.
Response to OT comment: WebLogic Server 7.0 uses its own implementation
of JAX-RPC
1.0. This implementation, I've been told by one of the BEA engineering
that worked
on it, has been certified to be JAX-RPC compliant by Sun. Don't know
about Apache
Axis, in this regard. I use both Apache Axis and the JWSDP with WLS 6.1,
but I
haven't really spent a lot of time looking for differences between our
(BEA's)
implementation, and theirs.
Regards,
Mike Wooten
"Krish Venkataraman" <[email protected]> wrote:
Hey Mike ...
I hear ya..and I see the significance of WSIF...but that IBM started
it a year
back and itz not yet stabilized is what is holding me back...
U mite have a better hold of what WSIF can do...whatever I could grasp
from yesterday
is this...
a)It reads meta data from the wsdl and using a reflection mechanismcalls
the
service operations...
I see examples with primitive datatypes..but what happens when
complex/custom
datatypes come into play...
Would the client code differ between synchronous invocation toasynchronous
invocation...
And aleast in the samples for the WSIF distribution for connectors like
EJB/JMS
etc, the code does not look generic anymore..there are specific calls
to operations
and parameters...
Also Mike , what is the trade-off on performance between having adynamic
client(lets
say based on WSIF)or having a static client...the extent of reflection
a dynamic
client will have to do and create SAAJ objects at runtime will beenormous..
Also I know that there is a relevant API...but can u give an examleshowing
me
how I could discover services from UDDI ..?
Out of this current topic...does BEA use itz own implementation of SOAP
in itz
webservice implementation...and how does it compare with AXIS ?
Thanx,
Krish
"Michael Wooten" <[email protected]> wrote:
Hi Krish,
Well, I guess that's how things are when "needed functionality exceeds
the current
state of a technology" :-)
I (not necessarily BEA) look at it like way:
1. IBM co-authored the "Big 3" XML grammars for the current web
services
stack.
2. IBM always appears to be "there, somewhere" in the new crop ofproposed
additional
XML grammars for "partially agreed upon extension layers", for theweb
services
stack.
3. IBM donated it's original SOAP implementation to the open-sourcecommunity.
4. IBM came up with WSIF over a year ago.
5. IBM's WSTK uses the Apache Axis stuff.
6. A lot of the JAX-RPC/JAXM API is based on the Apache SOAP and Apache
Axis implementations.
7. It looks like IBM may have donated WSIF to Axis.
8. You appear to need something like WSIF :-)
So, there's probably at least a 60/40 chance that some WSIF-like thing
will make
it into the JWSDP, right? If you want "higher odds", you should talk
to the folks
working on the JWSDP, as they are somewhat "in charge" here :-)
Regards,
Mike Wooten
"Krish Venkataraman" <[email protected]> wrote:
Yes...I am surely lookin at something similar...but that framework
not
being standardized
scares me as I have seen many good ideas not seeing the light of the
day...and
I do not want to design something using a framework which might remain
un-standardized..
what are ur thots..
Thanx,
Krish
"Michael Wooten" <[email protected]> wrote:
Hi Krish,
It sounds like you want WSIF :-)
"WSIF allows stubless or completely dynamic invocation of a Web
service,
>>>>>>
based upon examination of the meta-data about the service at runtime.
It
also allows updated implementations of a binding to be plugged intoWSIF
at
runtime, and it allows the calling service to defer choosing a
binding
until
runtime."
Correct?
This is a relatively new "unofficial" addition to the Web ServicesStack,
so it
is not in WLS 7.0 (or Sun's JWSDP) yet. See the following link formore
details:
http://xml.apache.org/axis/wsif
Regards,
Mike Wooten
"Krish Venkataraman" <[email protected]> wrote:
Hey ,
I have an application which requires to talk to 2 different
published
webservices
from 2 different systems. Now instead od designing static webservice
clients for
each of these systems(which would involve having separate proxyjars
etc),
I am planning to design a dynamic webservice locator and invoker....
I know that we can have webservice clients which are dynamic tothe
extent
that
we can create proxy objects at runtime once we know the endpoint
WSDL..
eg:
ServiceFactory factory = ServiceFactory.newInstance();
QName serviceName =new QName
targetNamespace,"net.xmethods.services.stockquote.StockQuoteService");
>>>>>>>
QName portName = newQName(targetNamespace,"net.xmethods.services.stockquote.StockQuotePort");
>>>>>>>
QName operationName = newQName("urn:xmethods-delayed-quotes","getQuote");
>>>>>>>
URL wsdlLocation = newURL("http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl");
>>>>>>>
// create service
Service service = factory.createService(wsdlLocation, serviceName);
// create call Call call = service.createCall(portName,
operationName);
>>>>>>>
>>>>>>>
My question on this...if I have a dynamic approach like the abovewhat
are the
pros and cons..I guess it would surely have more overhead comparedto
a static
client...?
Secondly ,is it even feasible to design a dynamic client in such
a
way
that the
endpoint WSDL could also be an unknown and my generic client wouldalso
locate
the end-point dynamically and then invoke dynamic calls as above...
If anybody can share their insights on a dynamic webservice client
I would really
appreciate it...
Thanx,
Krish
KRISH.VENKATARAMAN
Senior Technology Analyst
Bank of America Corp.
Email:[email protected]
[BrowserClient.java]
[DynamicClient.java] -
How to develop a webservice with SAML on Weblogic 8.1
I will develop some webservices on Weblogic 8.1. On the security part, we will
use SAML. Is there somebody who can tell me how to do it? Do I need third party
product? And where I can find samples?
Thanks.
JianI will develop some webservices on Weblogic 8.1. On the security part,
we will use SAML. Is there somebody who can tell me how to do it? Do I
need third party product? And where I can find samples?Currently, we don't offer any support for SAML in WLS -- so you would
have to use a third party product. Depending on how you want to use it,
you may be able to use a third party product to create a handler for your
service or client.
However, if you want to use the handler in the server to set the subject
for the invoke, the handler architecture will prevent you from doing
this -- the API you use to set the user
(weblogic.security.service.SecurityManager.runAs() -- see
http://edocs.bea.com/wls/docs81/javadocs/weblogic/security/service/SecurityManager.html)
cannot be successfully used in handler methods. If you wish to do this,
I'm afraid the only way we have to support this is to use a servlet filter.
-Pete -
How to develop java webservice in jDeveloper
Hi,
iam new to web services. iwant to develop the webservice in jDeveloper. i am also new to jDeveloper. ?
can you please give me the steps to develop the webservices?
and also give me the suggestion which tool i can use?
if any body having the sample application please forward to [email protected]?
regards
ramHi frank,
thanks for your reply. i got it. but when i am testing this webservice its not calling properly.when i am calling the url,, its displaying as page cant be displayed. i had started the server as well..... what is the problem..
this is the url what i got from the wsdl file...
http://10.113.11.156:8888/WebApp-MyPro-context-root/HelloWSSoapHttpPort
regards
ram -
Developing Portable WebServices using Jdeveloper
I am currently using Jdeveloper 10.1.3.2 and I have developed WebServices from my existing WSDL files and deployed the WebServices in OC4J. Everything is working fine now. I noticed that Jdeveloper has created some OC4J specific files like oracle-webservice.xml. Now I want this working WebService Application to be deployed to another Application Server. I am sure it would fail.
My Question is,
1) How can I devlop Web Services using Jdeveloper which can be deployed in any App Server?
2) Will Jdev 11g with JAX-WS will be helpful?
3) Is there any tutorial for developing portable webservices which can be deployed across any App Server.Hi Frank
Thanks for your response.
So If I remove my oracle-webservices.xml and deploy my Project, Will it work in any App Server.
Also where can I put the contents in oracle-webservices.xml file like
<oracle-webservices xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/oracle-webservices-10_0.xsd">
<webservice-description name="''''''''">
<port-component name="''''''''">
<operations>
</operations>
</port-component>
</port-component>
</webservice-description>
</oracle-webservices>
Thanks -
SWF in SAP BSP Pages - Dynamic webservice connection
Hi,
We are using webservice connections in xcelisus to connect to webservices on R3.
In the webservice connection , we have imported the wsdl from sap and generated the connection.
Then we have the Hostname and port of SAP server in the webservice connection.
Once the development is completed and swf is generated , we have created a bsp application and placed the swf file in it on our SAP Dev system.
So now when we access the bsp application on Dev, the Dev webservice is called in the swf and data is retrieved.
Once the bsp is transported to QA system , as the webservice in swf is still pointing to Dev system, the data is retrieved from the Dev system only.
Is there a way to use falsh variables and dynamically call the webservice on the SAP system , based on the system it is called from, so that when we call the bsp application on QA system , it call the webservice on QA system instead of the one on Dev system.
Thanks,
TanujHi Tanuj,
unfortunately this is not possible within Xcelsius, take a look at following thread:
Re: Dynamic WSDL URL
Regards
Victor -
Hello friends,
Is it possible to decide at runtime to which web application server the request should send to depending on one of field in sender file?
e.g in file adapter we could specify the file name at runtime. I am not sure whether would it be possible , becoz WSDL contains location tag specifying where webservice resides....
i would appreciate for any kind of help
thanks,
PranavHI,
Yes it is possible to maitain the UDF to create the URL based on sender Data. see my links and also below link
RFC and SOAP scenarios-/people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
Dynamic configuration payload - https://media.sdn.sap.com/javadocs/NW04/SPS15/pi/com/sap/aii/mapping/api/DynamicConfiguration.html
Dynamic Configuration of Some Communication Channel Parameters using Message Mapping - /people/william.li/blog/2006/04/18/dynamic-configuration-of-some-communication-channel-parameters-using-message-mapping
Dynamic configuration in adapter modules - /people/daniel.graversen/blog/2006/10/05/dynamic-configuration-in-adapter-modules
Also see the below links for ref
RFC to SOAP
/people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
/people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1
/people/piers.harding/blog/2004/07/18/you-dont-need-to-use-soap-to-keep-your-rpc-clean
/people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2
/people/david.halitsky/blog/2006/08/25/soa-vs-rfc-it-doesnt-have-to-be-charles-bronson-vs-henry-fonda
/people/michal.krawczyk2/blog/2005/03/29/configuring-the-sender-rfc-adapter--step-by-step
https://www.sdn.sap.com/irj/sdn/advancedsearch?query=rfc%20to%20soap%20scenario&cat=sdn_weblog
Regards
Chilla -
I am using Crystal Reports for Eclipse to serve up some reports for my web application. Currently, I am using JDBC datasources in which I am changing the datasource at runtime in a CrystalReportViewer where I also set some report parameters for every report that passes thru it. However, I am now switching from JDBC datasources as my data provider to webservices. The webservices work perfectly during design time. However, in my report, I have to tell it that the webservice is located at http://localhost/. When I go to deploy these reports to production servers, I need to dynamically change the target URL to something like http://myproductionserver/ at runtime. I know this needs to take place in my CrystalReportViewer, but I can't figure out how to do it there. Can someone point me in the direction I need to be going?
Thanks in advance...Ok. I've been making a little bit of progress with this. I have added "replaceConnection" on my database controller and am changing the URLs there. However, when I do that, I get an invalid argument exception.
Here is my replaceConnection code:
private void replaceConnection(DatabaseController dbController) throws ReportSDKException
ConnectionInfos connInfos = dbController.getConnectionInfos(null);
for(IConnectionInfo connInfo : connInfos)
PropertyBag pb = connInfo.getAttributes();
String newQEServer = connInfo.getAttributes().getStringValue("PreQEServerName").replace("localhost", "BJRKQJ1-SHAW");
String newServerName = connInfo.getAttributes().getStringValue("Server Name").replace("localhost", "BJRKQJ1-SHAW");
String newHttpWebserviceUrl = connInfo.getAttributes().getStringValue("Http WebService URL").replace("localhost", "BJRKQJ1-SHAW");
pb.put("PreQEServerName", newQEServer);
pb.put("Server Name", newServerName);
pb.put("Http WebService URL", newHttpWebserviceUrl);
dbController.replaceConnection(connInfo, connInfo, null, DBOptions._ignoreCurrentTableQualifiers + DBOptions._doNotVerifyDB);
Here is the exception stack trace:
<<< ERROR - Unable to create parameter for type int32s >>><<< ERROR - detected an exception: Invalid argument
at com.crystaldecisions.reports.common.ExceptionFactory.a(Unknown Source)
at com.businessobjects.reports.sdk.requesthandler.ParameterRequestHandler.a(Unknown Source)
at com.businessobjects.reports.sdk.requesthandler.ParameterRequestHandler.do(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.a(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter$2.call(Unknown Source)
at com.crystaldecisions.reports.common.ThreadGuard.syncExecute(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
at com.businessobjects.sdk.erom.jrc.a.a(Unknown Source)
at com.businessobjects.sdk.erom.jrc.a.execute(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.execute(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.char(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.new(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.do(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.RemoteAgent.if(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.performDo(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.UndoUnitBase.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.an.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ParameterFieldController.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ParameterFieldController.add(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.for(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.byte(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.DatabaseController.replaceConnection(Unknown Source)
at com.businessobjects.GenerateReport.replaceConnection(GenerateReport.java:322)
at com.businessobjects.GenerateReport.createReportViewer(GenerateReport.java:213)
at com.businessobjects.GenerateReport.generateReport(GenerateReport.java:77)
at com.businessobjects.GenerateReport.doFilter(GenerateReport.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
>>>
Sorry if the code gets displayed all out of whack. I can never get this thing to display correctly using the "code" with { } tags. -
Dynamic webservice client for User-defined datatypes
Hi All,
I have a webservices with user-defined datat types. I want to write a dynamic client that will work even if there are any changes in the wsdl, so that I do not want to recompile the client or make any changes on the client side.
I tried using DII but we need to modify the custome objects and recompile the same. Suggest me any alternative.
Regards,
SanjayRob, unfortunately not. If I ever come across the solution, I will post it here.
The reason I wanted to use weblogic webservices was to take advantage of the asynchronous webservice functionality. I ended up using xfire instead for my webservices, as we already had that in place in the application, and then using polling clients to get the response. Not an ideal solution, but it works very good anyway.
regards,
Marcus -
Dynamic WebService client within a WebService Handler
We have a WebService running on WebLogic 10.3 that has a handler that contains a Webservice client that connects to a set of IIS WebServices.
The client is called with code like this:
QName qname = new QName("http://www.company.com/Webservices/", "UserService");
UserService service = new UserService(url, qname);
service.setHandlerResolver(resolver);
UserServiceSoap uss = service.getUserServiceSoap();
The URL is dynamic, we have different servers that contain different data other than that they are the same. When this is called the first time with URL http://abc it works just fine. If it is called again but this time pointing to URL http://xyz, the client still goes to http://abc. We have check through debugging to ensure that we are really passing the correct URL, and we are. I traced this through a tool called WireShark and can see our client making 2 GET requests to the proper WSDL but then does the POST to http://abc. URLS have been altered to protect the innocent :) This same webservice containing this handler works as expected within Tomcat, it is in WebLogic that things get weird. Any help would be appreciated.
Thanks,Hi
<b>Bojja Guruvulu</b>
My Email Id is : <b>[email protected]</b> -
Hi All,
i am facing a small issue regarding dynamic invocation of webservice from another webservice....
the probelm is when i tried to invoke a simple webmethod with string return type its working as expected.. and the same method is returning an array of string it started saying cant be able to deserialze the data....
i dont understand the meaning of this exception... can any body aware of this?
Regs,
VeeruHello,
When you have this error it is often because the JAX-RPC client does not know how to deserialize a specific XML type. In this case you have probably to use a custom mapping type.
It is quite hard to help you without any "real" information, could you please post the WSDL, the SOAP Response and the error. Also define how you exactly call the WS? JAX-RPC DII?
In the same time, you may know that we have on OTN a forum dedicated to Web Services
Regards
Tugdual Grall -
Develope complex WebService with JDeveloper and deploy to tomcat
Hello,
I am thinking of developing a complex WebService with JDeveloper and deploy it to tomcat.
The WebService should retrieve a few "normal" datatypes and a pdf and a few images. I try to store the pdf and the image in an Oracle DB as BLOB.
My idea ist to create a Package which selects the values, pdf and the image and retrieve them as the output paramter.
Then I want to create a WebService with the JDeveloper which calls this Package. This WebService should be published on a Tomcat.
My first question is if that is possible?
I think there are few problems.
I searched the forum about deploying a JDeveloper WebService to Tomcat, but I can not find a whole solution which is going to work. I read something about JAX-RPC, but I am new to this topic. So it would be very nice, if anyone could tell me where I can find the solution or post a quick guide to solve that.
Another question is how I have to decode the images and the pdf to provide those files in a WebService?
I would be very glad if anyone can help me or tell me where I can find information about that, becaus I am new to this topic!
Thank you,
TimHi,
does anybody have an idea about that?
Thanks,
Tim -
Hi,
I used Webservice annotations to generate a WS (as given in WLS documentation). I am creating a dynamic client but when I invoke the client I get error.
@WebService(name="ErrorHandlerPortType", serviceName="ErrorHandlerService")
public class ErrorHandler {
@WebMethod()
public String callErrorHandler(ErrorMessage message) {
try {
System.out.println("Producer: " + message.getProducer());
return "Here is the descirption: '" + message.getErrorDescription() + "'";
} catch (Exception ex) {
ex.printStackTrace();
return "Caught Exception";
public class ErrorMessage implements java.io.Serializable {
private String consumer;
private String producer;
private String errorCode;
private String errorDescription;
WSLD which got generated.
- <WL5G3N0:definitions name="ErrorHandlerServiceDefinitions" targetNamespace="http://katz/integration/esb/errorhandling/ws" xmlns="" xmlns:WL5G3N0="http://schemas.xmlsoap.org/wsdl/" xmlns:WL5G3N1="http://katz/integration/esb/errorhandling/ws" xmlns:WL5G3N2="http://schemas.xmlsoap.org/wsdl/soap/">
- <WL5G3N0:types>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://katz/integration/esb/errorhandling/ws" xmlns:WL5G3N0="http://schemas.xmlsoap.org/wsdl/" xmlns:WL5G3N1="http://katz/integration/esb/errorhandling/ws" xmlns:WL5G3N2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="java:katz.integration.esb.errorhandling.datatype" />
- <xs:element name="callErrorHandler">
- <xs:complexType>
- <xs:sequence>
<xs:element name="message" type="java:ErrorMessage" xmlns:java="java:katz.integration.esb.errorhandling.datatype" />
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="callErrorHandlerResponse">
- <xs:complexType>
- <xs:sequence>
<xs:element name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="java:katz.integration.esb.errorhandling.datatype" xmlns:WL5G3N0="http://schemas.xmlsoap.org/wsdl/" xmlns:WL5G3N1="http://katz/integration/esb/errorhandling/ws" xmlns:WL5G3N2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:complexType name="ErrorMessage">
- <xs:sequence>
<xs:element minOccurs="1" name="Consumer" nillable="true" type="xs:string" />
<xs:element minOccurs="1" name="Producer" nillable="true" type="xs:string" />
<xs:element minOccurs="1" name="ErrorCode" nillable="true" type="xs:string" />
<xs:element minOccurs="1" name="ErrorDescription" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</WL5G3N0:types>
- <WL5G3N0:message name="callErrorHandler">
<WL5G3N0:part element="WL5G3N1:callErrorHandler" name="parameters" />
</WL5G3N0:message>
- <WL5G3N0:message name="callErrorHandlerResponse">
<WL5G3N0:part element="WL5G3N1:callErrorHandlerResponse" name="parameters" />
</WL5G3N0:message>
- <WL5G3N0:portType name="ErrorHandlerPortType">
- <WL5G3N0:operation name="callErrorHandler" parameterOrder="parameters">
<WL5G3N0:input message="WL5G3N1:callErrorHandler" />
<WL5G3N0:output message="WL5G3N1:callErrorHandlerResponse" />
</WL5G3N0:operation>
</WL5G3N0:portType>
- <WL5G3N0:binding name="ErrorHandlerServiceSoapBinding" type="WL5G3N1:ErrorHandlerPortType">
<WL5G3N2:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <WL5G3N0:operation name="callErrorHandler">
<WL5G3N2:operation style="document" />
- <WL5G3N0:input>
<WL5G3N2:body parts="parameters" use="literal" />
</WL5G3N0:input>
- <WL5G3N0:output>
<WL5G3N2:body parts="parameters" use="literal" />
</WL5G3N0:output>
</WL5G3N0:operation>
</WL5G3N0:binding>
- <WL5G3N0:service name="ErrorHandlerService">
- <WL5G3N0:port binding="WL5G3N1:ErrorHandlerServiceSoapBinding" name="ErrorHandlerPortTypeSoapPort">
<WL5G3N2:address location="http://127.0.0.1:7100/ErrorHandlingWebservice/ErrorHandler" />
</WL5G3N0:port>
</WL5G3N0:service>
Client Code:
QName serviceName = new QName("http://katz/integration/esb/errorhandling/ws","ErrorHandlerService");
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(serviceName);
QName port = new QName(qnamePort);
Call call = service.createCall();
QName operationName = new QName("http://katz/integration/esb/errorhandling/ws","callErrorHandler");
call.setOperationName(operationName);
QName messageDatatype = new QName("java:katz.integration.esb.errorhandling.datatype");
call.addParameter("message", messageDatatype, ErrorMessage.class, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY,URI_ENCODING);
call.setTargetEndpointAddress(endpoint);
ErrorMessage errMsg = FormErrorMessage.getMessage("EXCEL", "PMM", "EXL123", "Trial Error Message");
System.out.println("Going to invoke......");
Object[] params = { errMsg };
Double result = (Double)call.invoke(params);
I am getting the error:
javax.xml.rpc.JAXRPCException: failed to invoke operation 'callErrorHandler' due to an error in the soap layer (SAAJ); nested exception is: Message[ failed to serialize class katz.integration.esb.errorhandling.datatype.ErrorMessageweblogic.xml.schema.binding.SerializationException: mapping lookup failure. class=class katz.integration.esb.errorhandling.datatype.ErrorMessage class context=TypedClassContext{schemaType=java:katz.integration.esb.errorhandling.datatype}]StackTrace[
javax.xml.soap.SOAPException: failed to serialize class katz.integration.esb.errorhandling.datatype.ErrorMessageweblogic.xml.schema.binding.SerializationException: mapping lookup failure. class=class katz.integration.esb.errorhandling.datatype.ErrorMessage class context=TypedClassContext{schemaType=java:katz.integration.esb.errorhandling.datatype}
at weblogic.webservice.core.DefaultPart.invokeSerializer(DefaultPart.java:339)
at weblogic.webservice.core.DefaultPart.toXML(DefaultPart.java:304)
at weblogic.webservice.core.DefaultMessage.toXML(DefaultMessage.java:651)
at weblogic.webservice.core.ClientDispatcher.send(ClientDispatcher.java:209)
Please help. I have got stuck here for last couple of days.Hi,
You can try to add this property setting in client code:
System.setProperty("javax.xml.rpc.ServiceFactory", "weblogic.wsee.jaxrpc.ServiceFactoryImpl");
Meanwhile, the line:
QName messageDatatype = new QName("java:katz.integration.esb.errorhandling.datatype");
should be:
QName messageDatatype = new QName("java:katz.integration.esb.errorhandling.datatype", "ErrogMessage"); ?
Thanks,
Kevin -
Developing a webservice portlet
Hi All, I need some help in developing a web service portlet or use an existing one something like a stock quote or weather... thanks in advance
OTN's Web Services technology center provides documentation, tutorials, sample code, and more.
The URL is:
http://otn.oracle.com/tech/webservices/ -
Hi,
We have around 20 webservices deployed in a dev environment (dev1). We wanted to migrate that to a test environment and then to production.
We figured that we would have to change all our form code base to point to the webservices deployed at test1 and then to prod1 if we have to migrate from dev1 server.
Is there an easy way to do this ? we would like to read the webservices based on the machine we want at runtime and execute it ?
any suggestions ?
I know in other programming languages you read from a .properties file and do it, but not sure in form desginer ?Ok I am finally back in the office and have found the information required. Assuming the connection name in the DataView wizard is set to DataConnection, then the command to get at the soap address is:
xfa.connectionSet.DataConnection.soapAddress.value
So to set a new address use:
xfa.connectionSet.DataConnection.soapAddress.value = "http://server:port/servicename";
Maybe you are looking for
-
How to color a row using REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi, I'm able to color a row using REUSE_ALV_GRID_DISPLAY, I tried the same way to color a row at the item level using 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' but I'm not able to get the row color, please let me know how to acheive this. Thanks in Advnce Nar
-
Error while rendering point features
Hi MapViewer folks, I am havinf hard time figuring out why I am receiving that error: SEVERE: MAPVIEWER-01006: Invalid style type for Point features. on a theme (point, line and polygon) using an advanced style. Here are my style definition. Marker s
-
Is there a way to store videos into a separate album right after you shoot it on iPhone camera? Finding videos in iPhone photo album requiers you to search through everything on your album. Is there a way to create separate video album or have them a
-
Exception handling in Interconnect
Hi, What is the best way of handling exceptions within oracle interconnect? I mean if anything goes wrong within HUB or within adapter I want to put a log for this in a particular directory and also want to send mails to support guys. How can I achiv
-
If I have a puzzle of pieces of real recordings scattered over my timeline - how can I know the filename of a certain snippet in my Media folder? That can be useful sometimes, e.g. if you want to edit it using an audio editor, or if you want to re-bu