About serilize/deserilize complex objects
Dear friends,
I have a question about transfering complex objects between client and server. if I just transfer primitive data type, any language of client side can consume this web service. but how about if I transfer complex object?
for example, in the server side, I use java to make a bean--bean1, in this bean, there is a variable bean2, it's also a java bean with primitive variables. though WSDL file, I know the complex data type is mapped to primitive data type at last. but I don't know if the client side can consume this web service if it's made by c language or perl language. also, supposing such kind of client side can consume this web service, can the client side transfer back this bean object to server and server can recognize it?
I really confused about this, from theory, web service is platform indepedent, does it mean language indepedent? or conditionally? does there any samples or articles about it?
any hint will be greatly appreciated!
Sammy
It depends on the product and version of CORBA spec you are working with, but you can always pass a reference to the interface of the object in the parameter list, then the code can do whatever it needs to by manipulating the interface.
Jeff <[email protected]>
Technical Lead
eBay.com
eBay.com is recruiting for multiple open Java engineering positions.
Email me your resume to be put in contact with a hiring manager.
Principles only.
Similar Messages
-
Web Services with Complex Objects (Urgent !!)
Hi,
My last post was on a problem using IBM-RAD (Service) and AXIS2 (Client) in "New to Java" Forum. That is one of the trial scenarios I'm working on nowadays. Hope, I'll get some useful reply soon.
Now, I need a suggestion about the application I'm working upon. It is as follows:
(i) The application (i.e. Service Class) takes some primitive,String and/or some bean object as input
(ii) It returns a bean object [or an array (can use collection class also if possible) of bean objects].
(iii) The bean properties are primitive,String , other bean objects, and/or some collection object(Vector / ArrayList etc.) i.e. it should handle complex objects.
(iv) The Service should run on Websphere and Client on Tomcat.
A pictorial representation is given below:
[primitive/String/bean object (Input arg)]
[(Contains primitive/String/other bean objects/collection class)] Bean <---------> Service <----------------------- Client
[Calls bean] |===============> Client
[Returns bean (or array of beans / collection object)]
I'm now trying (by building test applications) a combination of IBM-RAD (Service) and AXIS2 (Client), but facing problems in handling array of beans and/or collection classes either on Service or on the Client side.
So, I need some suggestions on whether I'm going the right way, or need to change my approach (or technology). Any suggestion would be appreciated.
Please reply ASAP, it is urgent.
Thanks in advance,
Sumanno problem for me, so it's not urgent.
Request for help denied. -
Interfaces and methods with complex object
In all the examples I have, the methods of an interface use only basic java datatypes (int, Character, ..)
I want to pass a Vector that represents a list of objects from one of my own classes to an interface method.
class Myclass ...
private String p1;
private int p2;
myInterfaceMethod(..., Vector list, ...)
// list is a vector of Myclass objects
How do I know about Myclass when implementing the interface and how do I access p1 and p2 ?You can use any kind of "complex" object in your interface methods, all of them are objects at last.
The other question seems to be a misunderstanding of interface implementation. When u "implement" an interface in a class, all that JVM does is to check that you actualy have one method (with code inside its body) for each method you defined previously in the interface.
Think of an interface as a contract signed by a class. It's forced to implement each method definied in you interface. So, as the method is defined inside the class, you can access any data member of the class without doing anything "special". Do u catch it? -
Problem with some characters in complex objects
Hi all,
I've built a webservice which returns a complex object with several fields inside. All fields are public and accessable via getter and setter methods.
The problem is, that some of these fields contains numbers or underscores in their names.
For example:
public int field_a;
or
public String house3of4;
When I try to import these webservice as a model in a Web Dynpro project, it doesn't work until I remove these characters.
Is this a known problem or is there any solution for it?
Thanks
ThomasNLS_LANG in registry is "ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256"
I use oracle form 10g for developer
oracle form 9i for database
when I build a form in client side and make a text with farsi characters, when I run the form,all characters shows me correct in farsi except four characters(گ چ ژ پ) -
How to convert an array collection instance to a complex object for interaction with webservice
Hi there,
I have a stubborn problem that I am trying to work out the best way to solve the problem. I am interacting with a WebService via HTTPService calling a method called find(String name) and this returns me a List of ComplexObjects that contain general string and int params and also lists of other Complex Objects. Now using the code:
ArrayCollection newOriginalResultsArray = new ArrayCollection(event.result as Array)
flex converts my complex objects results to an arraycollection so that I can use it in datagrids etc. Now up until this part is all good. My problem is when getting a single instance from the results list, updating it by moving data around in a new datagrid for example - I want to interact with the webservice again to do an create/update. This is where I am having problems - because these webservice methods require the complex object as a parameter - I am struggling to understand how I can convert the array collection instance back to my complex object without iterating over it and casting it back (maybe this is the only way - but I am hoping not).
I am hoping that there is a simple solution that I am missing and that there is some smart cookie out there that could provide me with an answer - or at least somewhere to start looking. I guess if I have no other alternative - maybe I need to get the people who built the service to change it to accept an array - and let them do the conversion.
Any help would be greatly appreciated.
BertHi Bert,
According to my knowledge you can use describeType(Object) method which will return an XML... That XML will contain Properties and values just iterate through the XML and create a new Object.. Probably u can use this method...
public function getObject(reqObj:Object,obj:Object,instanceName:String,name:String=null,index:int=-1):Obj ect
if(!reqObj)
reqObj = new Object();
var classInfo:XML = describeType(obj);
var className:String = instanceName;
if(name!=null)
className=name+"."+className;
if(index!=-1)
className=className+"["+index+"]";
for each (var v:XML in classInfo..accessor)
var attributeName:String=v.@name;
var value:* = obj[attributeName]
var type:String = v.@type;
if(!value)
reqObj[className+"."+attributeName] = value;
else if(type == "mx.collections::ArrayCollection")
for(var i:int=0;i<value.length;i++)
var temp:Object=value.getItemAt(i);
getReqObject(reqObj,temp,attributeName,className,i);
else if(type == "String" || type == "Number" || type == "int" || type == "Boolean")
reqObj[ className+"."+attributeName] = value;
else if (type == "Object")
for (var p:String in value)
reqObj[ className+"."+attributeName+"."+p] = value[p];
else
getReqObject(reqObj,value,attributeName,className);
return reqObj;
Thanks,
Pradeep -
Complex object as parameter from BPEL PM to Web Service
Hello,
I'm having a problem with being able to invoke a method on my web service from BPEL PM. It's a 'create' method, so I'm sending a complex object as the input parameter of the method.
I'm encountering the same kind of problems I have at different stages in the project I'm on: SOA works really well as long as you don't use complex objects. As soon as you do, SimpleDeserializer exceptions seem to be thrown all over the place. In this case, the error I'm getting is:
<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="code">
<code>Server.userException</code>
</part>
<part name="summary">
<summary>when invoking endpointAddress 'http://covarm.tvu.ac.uk/validationEvent/services/validationEventSOAP', org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.</summary>
</part>
<part name="detail">
<detail>AxisFault faultCode: {http://xml.apache.org/axis/}Server.userException faultSubcode: faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:188) at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:893) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:200) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:684) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:207) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:265) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:190) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:276) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:437) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:316) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:701) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:335) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:674) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:866) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source)</detail>
</part>
</remoteFault>
The WSDL is at:
http://covarm.tvu.ac.uk/validationEvent/wsdl/validationEventSOAP.wsdl
I'm invoking the 'createEvent' method. I know the service works okay because I've tested it with Rational Software Architect and Eclipse's Web Services Explorer, and also with standalone code and JUnit tests.
The problem seems to be getting the mapping from BPEL PM to the Web Service. I'm sending the object as a message type that's defined in the WSDL of the service:
<xsd:element name="createEventRequest" type="tns:event" />
- <xsd:complexType name="event">
- <xsd:sequence>
<xsd:element name="event-detail" type="tns:event-detail" />
<xsd:element name="proposed-dates" type="tns:proposed-dates" />
<xsd:element name="panel" type="tns:panel" />
<xsd:element name="development-team" type="tns:development-team" />
<xsd:element name="minute" type="xsd:string" />
<xsd:element name="feedback-list" type="tns:feedback-list" />
</xsd:sequence>
</xsd:complexType>
Is this something that's
a) fixable?
b) workaroundable?
c) a known issue?
Thanks,
DanBefore I start crying at my own impotence, how can I configure the bpel.xml file (for obtunnel_ when it looks like this?
<?xml version = '1.0' encoding = 'UTF-8'?>
<BPELSuitcase>
<BPELProcess id="RunValidationEvent" src="RunValidationEvent.bpel">
<partnerLinkBindings>
<partnerLinkBinding name="client">
<property name="wsdlLocation">RunValidationEvent.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="validationEvent">
<property name="wsdlLocation">validationEventSOAPRef.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="notification">
<property name="wsdlLocation">notificationSOAPRef.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="TaskManagerService">
<property name="wsdlLocation">TaskManagerService.wsdl</property>
<property name="wsdlRuntimeLocation">${domain_url}/TaskActionHandler/TaskManagerService.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="TaskRoutingService">
<property name="wsdlLocation">TaskRoutingService.wsdl</property>
<property name="wsdlRuntimeLocation">${domain_url}/TaskActionHandler/TaskRoutingService.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="TaskActionHandler">
<property name="wsdlLocation">TaskActionHandler.wsdl</property>
<property name="wsdlRuntimeLocation">${domain_url}/TaskActionHandler/TaskActionHandler?wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="IdentityService">
<property name="wsdlLocation">LocalIdentityService.wsdl</property>
</partnerLinkBinding>
<partnerLinkBinding name="processParticipant">
<property name="wsdlLocation">processParticipantSOAPRef.wsdl</property>
</partnerLinkBinding>
</partnerLinkBindings>
<activationAgents>
<activationAgent className="oracle.tip.pc.services.hw.task.impl.TaskActivationAgent" partnerLink="TaskManagerService"/>
</activationAgents>
</BPELProcess>
</BPELSuitcase>
Or is it that I'm using local wsdl refs when I should be defining a partner likk in my web service wsdl? -
I have created a complex object by building it on a page, select all, then grouping the objects. Then I place several of these objects on the same page. If I need to ungroup one of these complex objects to make a change, I need to make dozens of clicks to select all of the elements again for regrouping, Is there an efficient way to re select all of the elements that are making up one of my complex opjects?
Thanks,
KenKen,
Usually it's possible to Click-Drag a Selection Rectangle to affect several elements at once. How easy this is depends on the layout and proximity to things you don't want to select. Sometimes to Click-Drag, we must begin in the Margin and also hold down the Command Key. If you get more objects selected than you intended, you can cancel the selection of individual items with a Command-Click.
Jerry -
Passing complex object from bpel process to web service
I have deployed my web service on apache axis.The wsdl file looks like as follows,
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://bpel.jmetro.actiontech.com" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://bpel.jmetro.actiontech.com" xmlns:intf="http://bpel.jmetro.actiontech.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <schema targetNamespace="http://bpel.jmetro.actiontech.com" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="ADLevelBpelWS">
- <sequence>
<element name="adLevelStr" nillable="true" type="xsd:string" />
<element name="id" type="xsd:int" />
</sequence>
</complexType>
- <complexType name="TransResultWS">
- <sequence>
<element name="description" nillable="true" type="xsd:string" />
<element name="id" type="xsd:long" />
<element name="responseType" type="xsd:int" />
<element name="status" type="xsd:boolean" />
</sequence>
</complexType>
- <complexType name="NamespaceDataImplBpelWS">
- <sequence>
<element name="ADLevel" nillable="true" type="impl:ADLevelBpelWS" />
<element name="appdataDef" nillable="true" type="apachesoap:Map" />
<element name="description" nillable="true" type="xsd:string" />
<element name="name" nillable="true" type="xsd:string" />
</sequence>
</complexType>
- <complexType name="CreateSharedNamespaceBpelWS">
- <sequence>
<element name="actor" nillable="true" type="xsd:string" />
<element name="comment" nillable="true" type="xsd:string" />
<element name="from" nillable="true" type="xsd:string" />
<element name="namespaceData" nillable="true" type="impl:NamespaceDataImplBpelWS" />
<element name="priority" type="xsd:int" />
<element name="processAtTime" nillable="true" type="xsd:dateTime" />
<element name="replyTo" nillable="true" type="xsd:string" />
<element name="responseRequired" type="xsd:boolean" />
</sequence>
</complexType>
</schema>
- <schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="mapItem">
- <sequence>
<element name="key" nillable="true" type="xsd:string" />
<element name="value" nillable="true" type="xsd:string" />
</sequence>
</complexType>
- <complexType name="Map">
- <sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem" />
</sequence>
</complexType>
</schema>
</wsdl:types>
+ <wsdl:message name="createNamespaceRequest">
<wsdl:part name="createNs" type="impl:CreateSharedNamespaceBpelWS" />
</wsdl:message>
- <wsdl:message name="createNamespaceResponse">
<wsdl:part name="createNamespaceReturn" type="impl:TransResultWS" />
</wsdl:message>
- <wsdl:portType name="JMetroWebService">
- <wsdl:operation name="createNamespace" parameterOrder="createNs">
<wsdl:input message="impl:createNamespaceRequest" name="createNamespaceRequest" />
<wsdl:output message="impl:createNamespaceResponse" name="createNamespaceResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="NAMESPACEWITHMAPSoapBinding" type="impl:JMetroWebService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="createNamespace">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="createNamespaceRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bpel.jmetro.actiontech.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="createNamespaceResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://bpel.jmetro.actiontech.com" use="encoded" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="JMetroWebServiceService">
- <wsdl:port binding="impl:NAMESPACEWITHMAPSoapBinding" name="NAMESPACEWITHMAP">
<wsdlsoap:address location="http://localhost:7001/axis/services/NAMESPACEWITHMAP" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
My NamespaceDataObjectImplBpelWS object contains element appDataDef which is of type java.util.Map.My bpel wsdl file is as below,
<?xml version="1.0"?>
<definitions name="NsWithMap"
targetNamespace="http://bpel.jmetro.actiontech.com"
xmlns:tns="http://bpel.jmetro.actiontech.com"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE DEFINITION - List of services participating in this BPEL process
The default output of the BPEL designer uses strings as input and
output to the BPEL Process. But you can define or import any XML
Schema type and us them as part of the message types.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<types>
<schema targetNamespace="http://bpel.jmetro.actiontech.com" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
<element name="createNamespace" type="tns:CreateSharedNamespaceBpelWS"/>
<element name="transResult" type="tns:TransResultWS"/>
<complexType name="TransResultWS">
<sequence>
<element name="description" type="string" />
<element name="id" type="long" />
<element name="responseType" type="int" />
<element name="status" type="boolean" />
</sequence>
</complexType>
<complexType name="ADLevelBpelWS">
<sequence>
<element name="adLevelStr" type="string" />
<element name="id" type="int" />
</sequence>
</complexType>
<complexType name="NamespaceDataImplBpelWS">
<sequence>
<element name="ADLevel" type="tns:ADLevelBpelWS" />
<element name="description" type="string" />
<element name="name" type="string" />
<element name="appdataDef" type="apachesoap:Map" />
</sequence>
</complexType>
<complexType name="CreateSharedNamespaceBpelWS">
<sequence>
<element name="namespaceData" type="tns:NamespaceDataImplBpelWS" />
</sequence>
</complexType>
<element name="desc" type="string"/>
</schema>
<schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
<complexType name="mapItem">
<sequence>
<element name="key" type="string" />
<element name="value" type="string" />
</sequence>
</complexType>
<complexType name="Map">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem" />
</sequence>
</complexType>
</schema>
</types>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MESSAGE TYPE DEFINITION - Definition of the message types used as
part of the port type defintions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<message name="NsWithMapRequestMessage">
<part name="payload" element="tns:createNamespace"/>
</message>
<message name="NsWithMapResponseMessage">
<part name="payload" element="tns:transResult"/>
</message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT TYPE DEFINITION - A port type groups a set of operations into
a logical service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- portType implemented by the NsWithMap BPEL process -->
<portType name="NsWithMap">
<operation name="initiate">
<input message="tns:NsWithMapRequestMessage"/>
</operation>
</portType>
<!-- portType implemented by the requester of NsWithMap BPEL process
for asynchronous callback purposes
-->
<portType name="NsWithMapCallback">
<operation name="onResult">
<input message="tns:NsWithMapResponseMessage"/>
</operation>
</portType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PARTNER LINK TYPE DEFINITION
the NsWithMap partnerLinkType binds the provider and
requester portType into an asynchronous conversation.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<plnk:partnerLinkType name="NsWithMap">
<plnk:role name="NsWithMapProvider">
<plnk:portType name="tns:NsWithMap"/>
</plnk:role>
<plnk:role name="NsWithMapRequester">
<plnk:portType name="tns:NsWithMapCallback"/>
</plnk:role>
</plnk:partnerLinkType>
</definitions>
I am trying to set this map data using java code ,
HashMap procADMap1 = new HashMap(5);
PropertyTypeWS pType = new PropertyTypeWS();
pType.setTypeIndex(2);
AppdataDefImplWS appData1 = new AppdataDefImplWS();
appData1.setName("Project");
appData1.setType(pType);
appData1.setMaxSize(400);
appData1.setLOB(false);
appData1.setDefaultValue("Project Default value");
procADMap1.put(appData1.getName(), appData1);
setVariableData("request","createNs","/createNs/namespaceData/appdataDef",procADMap1);
Then I am passing request object to the method which I want to invoke from bpel process.
I am able to deploy the application but when I do post message I am getting following exception,
NamespaceWithMap (createNamespace) (faulted)
[2004/09/09 18:35:54] "{http://schemas.oracle.com/bpel/extension}bindingFault" has been thrown. Less
faultName: {{http://schemas.oracle.com/bpel/extension}bindingFault}
messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
code: {Server.userException}
summary: {org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.}
detail: {null}
Is there any other way to handle Map type in bpel process?
Thanks in advance,
SanjayThanks for the quick reply.Actually the web service is already deployed on the server.What I want to do is use existing wsdl file of the deployed web service and invoke the method of the same using oracle PM.
If I remove element which uses apachesoap:Map type it just works fine also I am getting the complex object returned by the web service method.But when I try to set appDataDef which is of type apachesoap:Map(Axis conversion for java.util.Map and it uses namespace xmlns:apachesoap="http://xml.apache.org/xml-soap") I am getting the error.
Can you give me some direction to use this exising wsdl file to set map object or it is not possible. -
Passing complex object from JavaScript to Flex
Is it possible to call a Flex function (defined with ExternalInterface.addCallback) and pass a complex object from Javascript? The properties of the object are all simple types, but the object itself is an array of objects. For example:
<script type="text/javascript">
var arrayOfObj = [ { one: "one", two: 2, three: "blah" }, { one: "xyz", two: "abc", three: 3.141 } ];
callSomeFunctionInFlex(arrayOfObj);
</script>
What would I do on the Flex side to make this happen?Complex object passing works as expected in Blazeds.
There are certain cases where you need to write custom bean proxy classes to marshall an object, but your case is very simple and will not require it.
Make sure that you set the full java package and class name in your remote alias statement on your client value object. The class has to be fully qualified. The AS value object also needs the correct import of the nested value object or you will get a compile error.
Make sure that the blazeds server has the full class path set to your java objects.
To debug, you can turn on Blazeds logging in the services-config.xml file like this:
<logging>
<!-- You may also use flex.messaging.log.ServletLogTarget -->
<target class="flex.messaging.log.ConsoleTarget" level="DEBUG">
<properties>
<prefix>[BlazeDS]</prefix>
<includeDate>false</includeDate>
<includeTime>false</includeTime>
<includeLevel>true</includeLevel>
<includeCategory>false</includeCategory>
</properties>
</target>
</logging> -
Web Service Request Collection/Complex Objects doesn't work
I am unable to call a .net web service using Adobe LiveCycle Designer 8.0. My test web service accepts either a complex object or a collection of the same object.
EX)
[WebMethod]
public string CostChange(CostChangeNotificationItem change1, CostChangeNotificationItem change2)
return "Success";
[WebMethod]
public string CostChangeColl(CostChangeNotificationCol changes)
return "Success";
I can successfullly create the connection to the web service. When i drag and drop the connection request/button/and response onto the designer i can call the web service successfully.
However you never see the request objects on the form unless you change the subforms to flowed and the min and initial count of the object to 1. When this is done the web service never gets called. You can click the button until you are blue in the face with no successful call.Hello ,
our problem was a result of a corrupt database. Please check the Log files in CUCM . have a look for "missed table entries "
cli
utils dbreplication repair
check logs again the path to the log is displayed after the repair.
hope it helps
good luck -
Flex 4 - Complex objects in a web service response are null
I'm using a web service (imported by the data services tool) that returns an array of objects. The service returns the array just fine, except the objects aren't being created correctly.
The objects (we'll call them CPs for now) contain some strings, an int, and 3 other complex objects. The basic fields (strings, ints, booleans) show up just fine, but the complex objects all show up as null.
The web service is working properly, and I can see that the response it's getting is correct.
If anybody has any help regarding this issue, I'd greatly appreciate it.
Thanks!There should be classes generated by the tool that map to the types in the
WSDL, and then the actual webservice response has to match the types in the
WSDL. If there is some discrepancy, the conversion will not happen
correctly.
Also, the generated classes must be linked into the SWF. If you comment
them out of your code somehow, then they won't be available for the
conversion. Generate a link-report and make sure they are in.
You might also have trouble if you do not use the generated WebService and
go directly to mx:WebService. -
JAVA&SOAP:how to return a complex object( the object has an object within)
Lets say my Complex object is :
public class PersonWithAddress {
private String name;
private int ssn ;
private Address add;
PersonWithAddress() {
name="Gagan Tandon" ;
ssn =1111;
add = new Address("1113","WestPlum Street");
public String getName() {
return name;
public int getSSN() {
return ssn;
public Address getAddress() {
return add;
This complex object has Address object embedded in it.
public class Address {
private String house;
private String street;
public Address (String myHouse,String myStreet) {
house = myHouse;
street = myStreet;
public String getHouse() {
return house;
public String getStreet() {
return street;
My deployment Descriptor is as following: check the mappings part.
<isd:service xmlns:isd=
"http://xml.apache.org/xml-soap/deployment"
id="urn:xml-soap-person-demo">
<isd:provider type="java"
scope="Application"
methods="getPersonWithAddress">
<isd:java class="PersonServer"/>
</isd:provider>
<isd:faultListener>
org.apache.soap.server.DOMFaultListener
</isd:faultListener>
<isd:mappings>
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:xml-soap-person-demo" qname="x:PersonWithAddress"
javaType="PersonWithAddress"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:xml-soap-person-demo" qname="x:Address"
javaType="Address"
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
</isd:mappings>
</isd:service>
And in my SOAPRPC code at client end calls the following: check the mappingregistry code...
String serverHost = "http://localhost:8082/soap/servlet/rpcrouter";
SOAPMappingRegistry smr = new SOAPMappingRegistry();
Parameter p= null;
try {
System.out.println("here 0");
Response r=null;
Call c=new Call();
Vector parameters = new Vector();
System.out.println("here 1");
c.setTargetObjectURI ("urn:xml-soap-person-demo");
c.setMethodName ("getPersonWithAddress");
System.out.println("here 3");
c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// parameters.addElement (new Parameter("name", String.class, "Web Services Client", null));
// c.setParams (parameters);
c.setSOAPMappingRegistry(smr);
BeanSerializer beanSer = new BeanSerializer();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("urn:xml-soap-person-demo","Address"),Address.class,beanSer,beanSer);
smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("urn:xml-soap-person-demo","PersonWithAddress"),PersonWithAddress.class,beanSer,beanSer);
try
System.out.println("here 4");
r = c.invoke ( new URL(serverHost), "" );
// org.apache.soap.SOAPException can be thrown
catch ( Exception e )
e.printStackTrace();
// Check the response.
if (r.generatedFault ()) {
Fault f = r.getFault();
System.out.println ("Error Occurred: ");
System.out.println (" Fault Code = " + f.getFaultCode());
System.out.println (" Fault String = " + f.getFaultString());
// return f.getFaultString();
// return new String("gagan");
return null;
else {
System.out.println("here 5");
p = r.getReturnValue();
System.out.println("here 6");
// System.out.println( (String)greeting.getValue() );
System.out.println("SSN: " + ((PersonWithAddress)p.getValue()).getSSN());
return (PersonWithAddress) p.getValue();
catch( Exception e ){
e.printStackTrace();
// finally {
// return null;// String("not OK");
if (p==null)
return null;
else
return (PersonWithAddress) p.getValue();
When running this code..
The following error is thrown.
System.out.println("here 4") is printed.
[SOAPException: faultCode=SOAP-ENV:Client; msg=Unable to instantiate 'PersonWithAddress': Class org.apache.soap.encoding.soapenc.BeanSerializer can not access a member of class PersonWithAddress with modifiers ""; targetException=java.lang.IllegalArgumentException: Unable to instantiate 'PersonWithAddress': Class org.apache.soap.encoding.soapenc.BeanSerializer can not access a member of class PersonWithAddress with modifiers ""]
at org.apache.soap.rpc.Call.invoke(Call.java:294)
at PersonClient.getPersonWithAddress(PersonClient.java:92)
at PersonClient.<init>(PersonClient.java:11)
at PersonClient.main(PersonClient.java:20)
java.lang.NullPointerException
at PersonClient.getPersonWithAddress(PersonClient.java:96)
at PersonClient.<init>(PersonClient.java:11)
at PersonClient.main(PersonClient.java:20)
I am here 1
Exception in thread "main" java.lang.NullPointerException
at PersonClient.<init>(PersonClient.java:13)
at PersonClient.main(PersonClient.java:20)
What could be the problem..? Is there any info on net how could i pass complex objects of this type in Java through SOAP RPC.
GAGANHave you managed to sole the problem ? I have got similar one...
[SOAPException: faultCode=SOAP-ENV:Client; msg=Unable to instantiate 'auction.common.Property': auction/common/Property]
at proxy.soap.AuctionHistoryProxy.addAuctionProperty(AuctionHistoryProxy.java:515)
at java.lang.reflect.Method.invoke(Native Method)
(...) -
Using oracle.sql.STRUCT to pass in a COMPLEX OBJECT
I need to pass in a complex object (object with nested array of objects) into a oracle stored procedure.
We are using JDBC 9.2.0.1 drivers...
Note i am able to retrieve a complex object successfully using an oracle struct however i am not able to pass in the struct.
I do not want to use JPublisher as we are not using SQLJ.
I have looked through the documentation on using default structs and am getting an error when i try and create the struct...
I have created an array of objects with a sub array
and i create a struct descriptor however when i create the actual oracle struct
like
oracle.sql.Struct = new oracle.sql.Struct( structDesc,conn,complexobject)
I get a "java.sql.SQLException: Internal Error: Unable to resolve name"
Do i have to create STRUCTS for the nested object first ?
And then nest that STRUCT within the PARENT STRUCT to pass in complex objects ???
Any help would be much appreciated...
Gurinder
email [email protected]Thanks Konstantin Goryachev!
I'm using Oracle JDBC 9.2.0.3 drivers using a SQLData implementation.
Unfortunately i have something very similar to your code and i still get the following error
EXC: testPolicyRate(): java.sql.SQLException: Internal Error: Inconsistent catalog view
java.sql.SQLException: Internal Error: Inconsistent catalog view
void oracle.jdbc.dbaccess.DBError.throwSqlException(java.lang.String, java.lang.String, int)
DBError.java:187
void oracle.jdbc.dbaccess.DBError.throwSqlException(int, java.lang.Object)
DBError.java:229
void oracle.sql.StructDescriptor.initMetaData1_9_0()
StructDescriptor.java:897
void oracle.sql.StructDescriptor.initMetaData1()
StructDescriptor.java:864
boolean oracle.sql.StructDescriptor.isInstantiable()
StructDescriptor.java:508
void oracle.sql.STRUCT.<init>(oracle.sql.StructDescriptor, java.sql.Connection, java.lang.Object[])
STRUCT.java:107
oracle.sql.STRUCT oracle.sql.OracleSQLOutput.getSTRUCT()
OracleSQLOutput.java:96
oracle.sql.STRUCT oracle.sql.STRUCT.toSTRUCT(java.lang.Object, oracle.jdbc.OracleConnection)
STRUCT.java:408
oracle.sql.Datum oracle.jdbc.oracore.OracleTypeADT.toDatum(java.lang.Object, oracle.jdbc.driver.OracleConnection)
OracleTypeADT.java:284
oracle.sql.Datum[] oracle.jdbc.oracore.OracleTypeADT.toDatumArray(java.lang.Object, oracle.jdbc.driver.OracleConnection, long, int)
OracleTypeADT.java:327
oracle.sql.Datum[] oracle.jdbc.oracore.OracleTypeUPT.toDatumArray(java.lang.Object, oracle.jdbc.driver.OracleConnection, long, int)
OracleTypeUPT.java:143
oracle.sql.Datum[] oracle.sql.ArrayDescriptor.toOracleArray(java.lang.Object, long, int)
ArrayDescriptor.java:771
void oracle.sql.ARRAY.<init>(oracle.sql.ArrayDescriptor, java.sql.Connection, java.lang.Object)
ARRAY.java:118
void com.tu.lib.busobject.PolicyRate.main(java.lang.String[])
PolicyRate.java:198
Process exited with exit code 0.
Here's my code
* Main Method
public static void main(String[] args)
throws SQLException, IOException
Connection conn = null;
OracleCallableStatement cstmt = null;
try {
/* Setup connection */
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@neptune:1521:tu_test", "OPS$WWW", "welcome1");
conn.setAutoCommit(false);
System.out.println("conn is open = " + !conn.isClosed());
/* Setup map */
System.out.println("Creating type maps...");
java.util.Map typeMap = conn.getTypeMap();
typeMap.put(_SQL_NAME,PolicyRate.class);
typeMap.put(CoverageRate._SQL_NAME, CoverageRate.class);
typeMap.put(CoverageRate._SQL_ARRAY_NAME,CoverageRate[].class);
conn.setTypeMap(typeMap);
/* Create a coverage rate object to be inserted into array of policy rate object */
CoverageRate covrObj = new CoverageRate(1,
"HMS",
30,
5,
new BigDecimal(0),
null,
null,
new BigDecimal(0),
new BigDecimal(0),
0,
0);
/* Create an array */
System.out.println("Creating descriptor...");
ArrayDescriptor adesc = new ArrayDescriptor(CoverageRate._SQL_ARRAY_NAME,conn);
System.out.println("Created descriptor!");
Object [] covrArray = new Object[1];
covrArray[0] = covrObj;
System.out.println("Creating oracle array..");
ARRAY arr = new ARRAY(adesc,conn,covrArray);
System.out.println("Created array!!");
/* Create policy rate object */
PolicyRate prate = new PolicyRate ("TESTTRA",
"TRS",
TUDate.convertToSql("2003","08","27"),
TUDate.convertToSql("2004","06","25"),
TUDate.convertToSql("2004","06","29"),
"NEW",
1,
new BigDecimal(0),
new BigDecimal(0),
null);
/* Add coverage rate object to array -- assume array only has one element for timebeing */
System.out.println("Setting arr in policyrate...");
prate.setRates(arr);
System.out.println("Creating array.sql.ARRAY for covrObj..");
prate.setRates(new oracle.sql.ARRAY(adesc,conn,covrObj));
System.out.println("Created array.sql.ARRAY for covrObj..");
/* Setup statemenet object */
cstmt = (OracleCallableStatement) conn.prepareCall("{call dbpckg_rate_obj.p_rate_obj_calc_rate(?)}");
/* Bind variables to statement */
System.out.println("Setting policyrate object...");
cstmt.setObject(1,prate,OracleTypes.STRUCT);
System.out.println("Registering out object...");
cstmt.registerOutParameter(1,oracle.jdbc.OracleTypes.STRUCT,PolicyRate._SQL_NAME);
cstmt.execute();
/* Retrieve the object back */
System.out.println("Getting policy rate object back...");
prate = (PolicyRate) cstmt.getObject(1);
System.out.println("Object Retrieved " + prate.getProductcode() + " " + prate.getAgentcode());
/* Close database connection */
conn.close();
catch (Exception exc) {
System.out.println("EXC: testPolicyRate(): " + exc);
exc.printStackTrace();
if (conn != null)
conn.close();
finally {
if (conn != null)
conn.close();
I've opened up a tar through metalink hopefully they can help get past this error...:)
Gurinder -
About Exceptions in business object
Hi all,
could anyone please brief me about exceptions in business objects and how can we create them their.
i have tried to search also but haven't found any satisfactory solution.
regards
AbhayException in business objects are baiscally 3 types :Temporary, Application and system exception.
Temporary exception do not send the work item(running program)into error they can be retried later. while both Application and system exception send the work item into error.
you can make your own exception also in swo1 there when you go to exception tab -->press create button
and then u have to give exception no. say 1001, Application area say z001 and message type say 004 i.e.
message for invalide date. now exception will be created and then save it.
In se37 in function module (FM) also u can create exceptions and that FM can be used according to your requirnment in your business object. for eg. In FM BAPI_PO_RELEASE you can see ( in se37) different exceptions are used. similarly you can make if you are using any function module in your business object.
i hope this information will be helpful for u.
Regards
saurabh -
Problems rotating or resizing complex object in drawing program
I am unable to rotate or resize a complex object created in drawing. Such object contains squares, rectangles and triangles. When I try all of the individual objects kinda go their own way and the total object is totally destroyed.
This effect occurs whether or not the set of objects is grouped.
Can someone please help?
Thanks
MacBookPro Mac OS X (10.4.9)This effect occurs whether or not the set of
objects is grouped.
Are you sure that all the items were grouped? I
created a soda can with label and pop-top, duplicated
it 5 times, positioned them into a six-pack, and
grouped them. Whether rotated from the menu or from
the Object Size palette, the rotation is just as you
would expect. Neither the six-pack, nor the
individual cans, fly apart.
Yes I am sure. It doesn't really matter that your soda can doesn't fly apart. Some of my designs, basically the simplier ones, stay together. But the fact is that most of them do "fly apart" either through a rotation or through a resize. It is clearly some sort of bug that apparently has been around since the dawn of time and still has no fix. But thanks for comenting.
MacBookPro Mac OS X (10.4.7)
Maybe you are looking for
-
I am looking for a wall photo maker program can anyone recommend one.
I am looking for the above can anyone help please.
-
Will Windows 7 home Premium/Basic 64 bit Support FMLE 3.1
hi there I am planning to buy dell inspiron laptop which comes with Windows 7 Home Premium/Basic 64 bit.Will this OS support FMLE 3.1 ?
-
When joining a Lync dial-in conference the name recording is not working for participants
When our participants join a Lync conference via dial-in they are prompted with "After the tone please record your name then press pound." But then immediately the conference attendant says "You're now joining the meeting as an unknown participant."
-
Product Catalog Site in SharePoint Online
I am in the process of developing a a SharePoint Online site for Sales catalog (Product Catalog). I am trying to refer the steps for product catalog setup in SharePoint and I am always pointed to the steps which is explained for On-Premises. Can anyo
-
How could java get two strings from c function?
As title! I want to let a java code call C function. And the C funtion returns two unsigned char pointers. Thanks a lot.