Display a PDF returned as a base64 encoded clob from web service
I'm trying to display a PDF document returned from a SOAP v1.1 web service. I'm able to return the XML into a collection using a process of type 'web service', but am struggling to display the document.
This is the code I'm using to (attempt to) display the document, which doesn't return anything. If I exclude the clobbase642blob conversion an Adobe Reader pop-up appears, but I get an error message stating it is not a supported file type or the file has been damaged, which I would expect since it's a clob rather than a blob.
DECLARE
l_length NUMBER;
l_file_name VARCHAR2 (4000);
l_file CLOB;
l_blobfile BLOB;
l_ext VARCHAR2 (4000);
BEGIN
SELECT xtab."fileContent", xtab."fileName"
INTO l_file, l_file_name
FROM apex_collections c,
XMLTable(XMLNAMESPACES(DEFAULT 'http://www.stellent.com/Payslip_Services/'),'//Payslip_Get_FileResponse/Payslip_Get_FileResult/downloadFile' passing xmltype001
COLUMNS "fileContent" clob PATH 'fileContent'
, "fileName" PATH 'fileName'
) xtab
where c.collection_name = 'P15_PAYSLIP_GET_FILE_RESULTS';
l_blobfile := apex_web_service.clobbase642blob(l_file);
l_length := DBMS_LOB.getlength(l_file);
If INSTR (l_file_name, '.', -1, 1) > 0 then
l_ext := SUBSTR (l_file_name, INSTR (l_file_name, '.', -1, 1) + 1);
End if;
IF (UPPER (l_ext) = 'PDF') THEN
OWA_UTIL.mime_header ('application/pdf', FALSE);
ELSIF (UPPER (l_ext) = 'DOC') THEN
OWA_UTIL.mime_header ('application/msword', FALSE);
ELSIF (UPPER (l_ext) = 'TXT') THEN
OWA_UTIL.mime_header ('text/plain', FALSE);
ELSIF (UPPER (l_ext) = 'HTML') THEN
OWA_UTIL.mime_header ('text/html', FALSE);
ELSE
owa_util.mime_header('application/octet', FALSE );
END IF;
HTP.p ('Content-length: ' || l_length);
HTP.p ( 'Content-Disposition: attachment; filename="' || l_file_name || '"' );
OWA_UTIL.http_header_close;
WPG_DOCLOAD.download_file (l_file);
END;
Apex 4.2.2
Oracle 11g 11.2.0.1.0
Any suggestions would be appreciated.
Thanks,
Graham
What Adobe product is this a question for? This forum is for XML/API functionality for Adobe Connect. I'll move this question to the appropriate forum.
Similar Messages
-
Facing problem while going to catch return result from web-services.
Hi everybody,
I am new to BPEL. I am facing problem while going to catch the attributes of resultsets returning from web-services(QAS). As far as my knowledge, two types of results it should return - XML entities and another is attributes which is coming as the part of XML entitites. I am able to catch the XML entities, but can't catch the attributes under it. Even, I am not able to see whether web-services returning something within that field.
When, I tried to catch the attribute and store to a temporary varilable using the following code:
*<assign name="AssignQASDoGetAddress1">*
*<copy>*
*<from variable="InvokeQAS_DoSearch_OutputVariable"*
part="body"
query="/ns6:QASearchResult/ns6:QAPicklist/ns6:PicklistEntry/@PostcodeRecoded"/>
*<to variable="temp"/>*
*</copy>*
*</assign>*
but, I am facing the following selectionFailure errors after running it:
*"{http://schemasxmlsoap.org/ws/2003/03/business-process/}selectionFailure" has been thrown.*
-<selectionFailure xmlns="http://schemasxmlsoap.org/ws/2003/03/business-process/">
-<part name="summary">
*<summary>*
empty variable/expression result.
xpath variable/expression expression "bpws:getVariableData('InvokeQAS_DoSearch_OutputVariable', 'body', '/ns6:QASearchResult/ns6:QAPicklist/ns6:PicklistEntry/@PostcodeRecoded')" is empty at line 269, when attempting reading/copying it.
Please make sure the variable/expression result "bpws:getVariableData('InvokeQAS_DoSearch_OutputVariable', 'body', '/ns6:QASearchResult/ns6:QAPicklist/ns6:PicklistEntry/@PostcodeRecoded')"is not empty.
*</summary>*
*</part>*
*</selectionFailure>*
Getting this error it seems to me that web-service is returning nothing, but, it returns something as it has been catched using a method called isPostcodeRecoded() Java Code in Oracle ADF. This method has been used as it should return boolean whereas for catching the xml entities using java code we used the method like getPostcode(), getMoniker().
For your information, we are using Jdeveloper as the development tool for building the BPEL process.
Am I doing any syntax error. Please consider it as urgent and provide me asolution.
Thanks in advance.
Chandrachur.Thanks Dave and Marc, for your suggestions. Actually what I found is QAS web-service is returning nothing as attributes when the attributes are set to the default value. For example, following is the part of the wsdl of the result which QAS webservice returns.
<xs:element name="QASearchResult">
- <xs:complexType>
- <xs:sequence>
<xs:element name="QAPicklist" type="qas:QAPicklistType" minOccurs="0" />
<xs:element name="QAAddress" type="qas:QAAddressType" minOccurs="0" />
</xs:sequence>
<xs:attribute name="VerifyLevel" type="qas:VerifyLevelType" default="None" />
</xs:complexType>
</xs:element>
<xs:complexType name="QAPicklistType">
- <xs:sequence>
<xs:element name="FullPicklistMoniker" type="xs:string" />
<xs:element name="PicklistEntry" type="qas:PicklistEntryType" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Prompt" type="xs:string" />
<xs:element name="Total" type="xs:nonNegativeInteger" />
</xs:sequence>
<xs:attribute name="AutoFormatSafe" type="xs:boolean" default="false" />
<xs:attribute name="AutoFormatPastClose" type="xs:boolean" default="false" />
<xs:attribute name="AutoStepinSafe" type="xs:boolean" default="false" />
<xs:attribute name="AutoStepinPastClose" type="xs:boolean" default="false" />
<xs:attribute name="LargePotential" type="xs:boolean" default="false" />
<xs:attribute name="MaxMatches" type="xs:boolean" default="false" />
<xs:attribute name="MoreOtherMatches" type="xs:boolean" default="false" />
<xs:attribute name="OverThreshold" type="xs:boolean" default="false" />
<xs:attribute name="Timeout" type="xs:boolean" default="false" />
</xs:complexType>
<xs:complexType name="PicklistEntryType">
- <xs:sequence>
<xs:element name="Moniker" type="xs:string" />
<xs:element name="PartialAddress" type="xs:string" />
<xs:element name="Picklist" type="xs:string" />
<xs:element name="Postcode" type="xs:string" />
<xs:element name="Score" type="xs:nonNegativeInteger" />
</xs:sequence>
<xs:attribute name="FullAddress" type="xs:boolean" default="false" />
<xs:attribute name="Multiples" type="xs:boolean" default="false" />
<xs:attribute name="CanStep" type="xs:boolean" default="false" />
<xs:attribute name="AliasMatch" type="xs:boolean" default="false" />
<xs:attribute name="PostcodeRecoded" type="xs:boolean" default="false" />
<xs:attribute name="CrossBorderMatch" type="xs:boolean" default="false" />
<xs:attribute name="DummyPOBox" type="xs:boolean" default="false" />
<xs:attribute name="Name" type="xs:boolean" default="false" />
<xs:attribute name="Information" type="xs:boolean" default="false" />
<xs:attribute name="WarnInformation" type="xs:boolean" default="false" />
<xs:attribute name="IncompleteAddr" type="xs:boolean" default="false" />
<xs:attribute name="UnresolvableRange" type="xs:boolean" default="false" />
<xs:attribute name="PhantomPrimaryPoint" type="xs:boolean" default="false" />
</xs:complexType>
here the attributes like FullAddress, PostcodeRecodedare , etc. are not being return by the web-service when it is getting the default value false. But, if it gets true then , it is being displayed at the BPEL console.
Do you have any idea how can I catch the attributes and its value even when it gets the default value which is already set. Previously, it was returning(it was not being displayed at the console).
Thanks once again for your valuable suggestions...!!!
Chandrachur. -
When I connect my iTouch to my PC (windows 7) an error message is displayed reading "iTunes was unable to load dataclass information from sync services. Reconnect or try again later". I have completely uninstalled and then reinstalled iTunes. I have also completely reset my iTouch to factory defaults. I have even followed all the advice provided previously to other forum member with the same problem. Nothing seems to work. Please help me someone.
I'm getting the same problem with both my IPad 4 and iPhone 5
Just started a few weeks back, Since then I have had two Itunes updates.
Is this something Apple is aware of and trying to fix? -
How to upload Unicode encoding files from web?
Hi everyone,
I do not manage to upload Unicode encoding CSV files from web. Currently I use class CL_HTMLB_MANAGER to upload file from web. It works fine with ANSI encoding files, but file content is not uploaded correctly with Unicode encoding files. Especially I get innumerable characters u201C#u201D throughout the string that contains the file content (For example instead of u201CSAP CATALOG CSV 2.0u201D I get u201CÿþS#A#P# #C#A#T#A#L#O#G# #C#S#V# #2#.#0#u201D).
I did not find in forums a solution to my issue that is why I am now asking for your help.
How can I upload Unicode encoding files from web? Do you know another way to upload file from web that is Unicode compatible?
Remark: I tried to upload Unicode encoding files from SAP GUI using function module GUI_UPLOAD and upload is successful.
Here is the code that I currently used.
DATA: lr_event_ex TYPE REF TO if_htmlb_data,
fileupload TYPE REF TO cl_htmlb_fileupload,
lr_upload_model TYPE REF TO /ccm/cl_bsp_upload_model,
lr_error TYPE REF TO /ccm/cx_file_upload.
lr_event_ex = cl_htmlb_manager=>get_event_ex( runtime->server->request ).
IF lr_event_ex->event_name = 'fileUpload' AND lr_event_ex->event_type = 'upload'.
fileupload ?= lr_event_ex.
FREE lr_event_ex.
* get the model
lr_upload_model ?= me->get_model( model_id = 'mupl' ).
IF NOT fileupload->file_name IS INITIAL.
* upload data
TRY.
CALL METHOD lr_upload_model->upload_data
EXPORTING
iv_file_name = fileupload->file_name
CHANGING
cv_xcontent = fileupload->file_content.
CATCH /ccm/cx_file_upload INTO lr_error.
ENDTRY.
FREE fileupload.
ENDIF.
ENDIF.
Thank you in advance for helping me.
Best regards,
VanessaHi There,
Please check the details for the same.
Link: http://helpx.adobe.com/creative-cloud/help/sync-files.html#Sync or upload files
Troubleshoot sync:
Error: "Unable to sync files"
Creative Cloud File Sync | Known issues
Thanks,
Atul Saini -
How to use Flash Media Live Encoder as a web Service
Coud we use the Flash Media Live Encoder as a Web Service installed on another Server (Preferebaly on the Flash Media Server Itself).
FMLE is typically used on the client side, and it doesn't have any sort of API that you would use to run it as a service. That said, unless you wanted to publish a camera that is connected to the server, I'm not sure why you'd want to run FMLE as a service.
Perhaps if you explain what is is you want to accomplish.... -
Return 2D array from web service
Hi All,
I am new to web services development and start developing web service using net bean 6.9. I want to create the web service which needs to return the 2-d array. So i created it like this
public Object[][] getData(@WebParam(name = "startDate")
String startDate, @WebParam(name = "endDate")
String endDate) {
HashMap hm= new HashMap();
hm.put("key1", "val1");
hm.put("key2", "val2");
Object[][] twoDarray = new String[hm.size()][2];
Object[] keys = hm.keySet().toArray();
Object[] values = hm.values().toArray();
for (int row = 0; row < twoDarray.length; row++) {
twoDarray[row][0] = keys[row];
twoDarray[row][1] = values[row];
return twoDarray;
But when i test the web service using SOAPui then it did not returning anything. Can anyone guide me where is the problem??
Thanks
ShujaGi,
not sure what you are doing there, but you can build the J2EE WebService from your working POJO, and create a Web Service proxy class from the WSDL description (of the deployed or local WSDL file). Then, using the proxy class, you can access the output of the WebService.
Frank -
Can objects returned from web services be cast to strongly typed objects?
Can objects returned from web services be cast to strongly
typed objects?
Last I tried this was with one of the beta of Flex2 and it
did not work. You had to use ObjectProxy or something like that...
ThanksPlease post this question in the CRM On Demand Integration Development forum.
-
Displaying a PDF Returned from a Custom Service
I have been given a PDF Fillable Form(XFA). I have added a button so that when the user clicks the button it passes the form data as xml to a URL (my custom web service). The custom web service takes the data, renders a totally separate PDF and returns it in the response.
It all works fine, but the returned PDF opens in a separate window. I would love to find a way to get the current window to "refresh" and show the newly composed PDF.
Is there a way to do this? I am using LiveCycle Designer, but my web service is a completely custom Java servlet.
With Respect,
mattieFirefox is downloading the pdf and opening it in Preview. Safari is displaying the pdf directly in the browser. As such, if Autosize was previously selected (which may be the default for Safari) it zooms in the pdf relative to the size of the new window (and the size of the new window is set by the size of the parent window). You can reset the view size of the pdf in Safari by secondary-clicking on the pdf (a two-finger tap if you have that option enabled on your MBP, or a ctrl-click) and selecting Actual Size. Once you select Actual Size (versus Autosize) that setting seems to be retained for subsequent pdfs. You can also select Open in Preview from the contextual menu, which will open it in Preview like Firefox does (but without downloading the file).
Hope this helps... -
Problem with My Base64 Encoding CLOB Routine.
I have written a program which reads an xml file into the database
and makes it Base64encoded.
This needs to work on 10g and above
If the read length specified in the code below is greater than the length of the xml_file, then I get the expected result(output).
However if the read length is less than the length of the file, then I get a lot of '==' in the file and as a result, incorrect encoding which means that the file will not be readable through the application.
I'm pretty sure I'm reading the blob lengths correctly, and the problem is somehow related to the base64 encoding.Any help appreciated
[create or replace profile_dir as &profile_dir;
create global temporary table load_xml
(profile_text clob)
on commit delete rows;
create or replace
procedure encode_xml_clobs(p_file_in in varchar2,
p_clob_out out nocopy clob )
as
pragma autonomous_transaction;
dest_clob CLOB;
src_clob BFILE := BFILENAME('PROFILE_DIR', p_file_in);
dst_offset number := 1 ;
src_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning number;
-- processing declarations for encoding base64 --
v_xml_string varchar2(32767);
v_string varchar2(32767);
v_start_pos number := 0;
v_read_length number := 1000;
v_final_start_pos number;
v_clob_length number;
type clob_array_type is table of clob index by binary_integer;
clob_array clob_array_type;
v_index number :=0;
-- Declarations for converting base64encoded string to a clob
v_encoded_length number;
v_temp_clob clob;
BEGIN
-- THE FOLLOWING BLOCK OF CODE WILL ATTEMPT TO INSERT / WRITE THE CONTENTS
-- OF AN XML FILE TO A CLOB COLUMN. IN THIS CASE, WE WILL USE THE NEW
-- DBMS_LOB.LoadCLOBFromFile() API WHICH *DOES* SUPPORT MULTI-BYTE
-- CHARACTER SET DATA.
-- load_xml should be a Global temporary table with on commit delete rows
INSERT INTO load_xml(profile_text)
VALUES( empty_clob())
RETURNING profile_text INTO dest_clob;
-- OPENING THE SOURCE BFILE IS MANDATORY
DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadCLOBFromFile(
DEST_LOB => dest_clob
, SRC_BFILE => src_clob
, AMOUNT => DBMS_LOB.GETLENGTH(src_clob)
, DEST_OFFSET => dst_offset
, SRC_OFFSET => src_offset
, BFILE_CSID => DBMS_LOB.DEFAULT_CSID
, LANG_CONTEXT => lang_ctx
, WARNING => warning
DBMS_LOB.CLOSE(src_clob);
-- DBMS_OUTPUT.PUT_LINE('Loaded XML File using DBMS_LOB.LoadCLOBFromFile: (ID=1');
-- file now successfully loaded
select dbms_lob.GETLENGTH(profile_text)
into v_clob_length
from load_xml;
-- File now loaded in temporary table
-- we now need to take the clob , convert it to varchar2
v_read_length :=64;
v_xml_string := '';
while v_start_pos <= v_clob_length
loop
v_index := v_index + 1;
v_string := '';
--dbms_output.put_line('Start_pos=>'||(v_start_pos+1)||' Read Length=>'||v_read_length);
--encode base64
select utl_raw.cast_to_varchar2(
utl_encode.base64_encode(
utl_raw.cast_to_raw(dbms_lob.substr(profile_text,least(v_read_length,v_clob_length-v_start_pos),v_start_pos+1))
into v_string
from load_xml;
--dbms_output.put_line(v_string);
v_start_pos := v_start_pos+v_read_length;
clob_array(v_index) := v_string;
end loop;
p_clob_out := clob_array(1);
for i in 2 .. v_index
loop
dbms_lob.append(p_clob_out,clob_array(i));
end loop;
commit;
END;Base64 encoding encodes every 3 bytes of input data into 4 bytes of output data. It uses equal signs to indicate nodata and only at the end of the encoded sequence. Try chaning your v_read_length parameter to a multiple of 3 e.g. 960 or 1008 instead of the current 1000. I'm using multiples of 48 because the utl_encode.base64_encode function adds a linebreak for every 48 bytes of input data (64 bytes of output). If you use a value that's not divisible by 48 you will still get a legitimate encoding as long as it's divisible by 3, but you will get some lines longer than others when you append them together.
-
How to display complex type result from web service?
Hi,
I am trying to invoke a web service with the following code
but I can't display the result. Can someone help me how to display
the result?
<cfset randomID = CreateUUID()>
<cfset today = Now()>
<cfset args = StructNew()>
<cfset args.login = "wanna">
<cfset args.key = "#DateFormat(today, 'YYYY-MM-DD')#
#TimeFormat(today, 'hh:mm:ss')#:#Left(randomID,12)#">
<cfset args.hash= LCase(Hash("123456" & args.key,
"SHA"))>
<CFINVOKE webservice="
http://sandbox.voxbone.com/ws/services/VoxService?wsdl"
METHOD="getCountriesList"
AuthenticationToken="#args#"
RETURNVARIABLE="Result">
<cfoutput>#Result#</cfoutput>I have tried using that that it display the following. I was
expecting a list of coutries but it display the following text
only. Can you guide me in displaying list of countries?
"object of
voxbone.webservices.services.containers.ArrayOfCountry"
Methods hashCode (returns int)
equals (returns boolean)
getCountry (returns
[Lvoxbone.webservices.services.containers.Country;)
getCountry (returns
voxbone.webservices.services.containers.Country)
getSerializer (returns interface
org.apache.axis.encoding.Serializer)
getDeserializer (returns interface
org.apache.axis.encoding.Deserializer)
getTypeDesc (returns org.apache.axis.description.TypeDesc)
setCountry (returns void)
setCountry (returns void)
getClass (returns java.lang.Class)
wait (returns void)
wait (returns void)
wait (returns void)
notify (returns void)
notifyAll (returns void)
toString (returns java.lang.String) -
The format of XML file returned from web service
Hi everyone,
My web service (build in asp.net 2.0 with C#) returns the
following xml file which is not what I want.
<Root>
<Root2>
<Person> .... </Person>
<Person> .... </Person>
<Person> .... </Person>
</Root2>
</Root>
But I want my web service to return the following xml file.
How can I get the following xml file instead of the above xml file
? Thanks.
<Root>
<Person> .... </Person>
<Person> .... </Person>
<Person> .... </Person>
</Root>Thanks for everyone's reply!
Sorry, I don't know where to set resultFormat="e4x". Below is
my code. And LINE 111 gives error. And the error message is below.
And the xml returned from the web service is below.
Error: Error #2093: The Proxy class does not implement
getDescendants. It must be overridden by a subclass.
at Error$/throwError()
at flash.utils::Proxy/
http://www.adobe.com/2006/actionscript/flash/proxy::getDescendants()
at
LogIn/loginHandler()[P:\JIMMY-FLEX\Flex_LogIn\LogIn.mxml:58]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.rpc::AbstractService/dispatchEvent()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\A bstractService.as:232]
at mx.rpc::AbstractOperation/
http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\3.0.x\frameworks\pro jects\rpc\src\mx\rpc\AbstractOperation.as:193
at mx.rpc::AbstractInvoker/
http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\3.0.x\frameworks\projec ts\rpc\src\mx\rpc\AbstractInvoker.as:191
at
mx.rpc::Responder/result()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:4 1]
at
mx.rpc::AsyncRequest/acknowledge()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\AsyncR equest.as:74]
at
DirectHTTPMessageResponder/completeHandler()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\ messaging\channels\DirectHTTPChannel.as:381]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="
http://www.adobe.com/2006/mxml"
width="100%" height="100%" xmlns:ns1="*">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
namespace FaciNS = "
http://FaciNet.com/";
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
//public var __xmlResult:XML;
public var ws:WebService;
public function Log_In(UN:String, PW:String):void
ws.Login(UN, PW);
public function getLoginData():void {
loadWSDL();
Log_In(UN.text, PW.text);
public function loadWSDL():void
ws = new mx.rpc.soap.WebService();
ws.wsdl = "
http://localhost:50779/VS2008_LogIn/Service.asmx?wsdl"
ws.useProxy = false;
ws.addEventListener("fault", faultHandler);
ws.addEventListener("result", loginHandler);
ws.loadWSDL();
public function loginHandler(e:ResultEvent):void {
var wkSouID:String = e.result[0]..SouID; // LINE 111
trace(wkSouID);
public function faultHandler(event:FaultEvent):void
dispatchEvent(new Event("Error"));
public function checkUser(UName:String, PWord:String):void {
getLoginData();
]]>
</mx:Script>
<mx:Panel id="loginPanel" horizontalScrollPolicy="off"
verticalScrollPolicy="off" width="400" height="200" x="97"
y="66">
<mx:Form id="loginForm" width="100%" height="100%">
<mx:FormItem label="Username:" color="red">
<mx:TextInput id="UN" />
</mx:FormItem>
<mx:FormItem label="Password:" color="red">
<mx:TextInput id="PW"/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar>
<mx:Spacer width="100%" id="spacer1"/>
<mx:Button label="Login" id="loginButton"
click="checkUser(UN.text, PW.text)" />
</mx:ControlBar>
</mx:Panel>
</mx:Canvas>
<?xml version="1.0" encoding="utf-8" ?>
- <ArrayOfLogIn xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="
http://tempuri.org/">
- <LogIn>
<SouID>2</SouID>
<LogInUserID>3</LogInUserID>
<LogInUserName>samlam</LogInUserName>
<Password>abc123</Password>
<DialectID>4</DialectID>
<CreatedByUserID>5</CreatedByUserID>
<UpdatedByUserID>5</UpdatedByUserID>
</LogIn>
- <LogIn>
<SouID>3</SouID>
<LogInUserID>4</LogInUserID>
<LogInUserName>samlam</LogInUserName>
<Password>abc123</Password>
<DialectID>4</DialectID>
<CreatedByUserID>5</CreatedByUserID>
<UpdatedByUserID>5</UpdatedByUserID>
</LogIn>
</ArrayOfLogIn> -
Complex Return types from web service
Hi,
Iam developing a web service using axis.In that i want to return array of objects to the client.
But when iam calling from the client side iam getting the class cast exception.
I wrote server-config.wsdd file manually. do i need to add any more if i want to return array of java beans.
server-config.wsdd
<service name="MyService" provider="java:RPC">
<requestFlow>
<handler type="soapmonitor"/>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.a.b.c.X.Y.ServiceDelegate"/>
<beanMapping qname="myNS:ABCVo"
xmlns:myNS="com.a.b.c.vo"
languageSpecificType="java:com.a.b.c.vo.ABCVo"/>
</service>
ServiceDelegate:
public ABCVo[] getCount(String accessType,long orgId,Date fromDate,Date toDate)
return ABCVo[];
client:
I place all the stubs in the client app as a jar file. and the code is just like
ABCVo[] so = del.getCount("group",l,calendar,calendar);
Iam getting the following exception:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.ClassCastException: [Ljava.lang.Object;
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:evoke12
java.lang.ClassCastException: [Ljava.lang.Object;
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(Deserializ
ationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme
nt(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scan
EndElement(XMLNSDocumentScannerImpl.java:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
l.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X
ML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.
java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab
stractSAXParser.java:1242)
at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(Deserialization
Context.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnders
tandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
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 com.cscinfo.webservice.client.LmsServiceSoapBindingStub.getSOPCountBy
NatureOfCase(Unknown Source)
at com.cscinfo.cscglobal.web.action.EnterCSCGlobalAction.execute(EnterCS
CGlobalAction.java:68)
at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:116
4)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:42)
at com.cj.trim.trimFilter.doFilter(Unknown Source)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:42)
at weblogicx.servlet.gzip.filter.GZIPFilter.doFilter(GZIPFilter.java:70)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:3229)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
ervletContext.java:2002)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
ontext.java:1908)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1362)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)It is working for me. See the following configuration.
<service name="TestService" provider="java:RPC">
<requestFlow>
<handler type="soapmonitor"/>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.xxx.xxx.web.servlet.TestService"/>
<beanMapping qname="ns:XBeanInfo" xmlns:ns="XBeanInfo" languageSpecificType="java:com.xxx.xxx.web.util.XBeanInfo"/>
<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
qname="myNS:XBeanInfo"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
xmlns:myNS="urn:TestService"
type="java:com.xxx.xxx.web.util.XBeanInfo"/>
</service> -
How to show all data returned from web service in a dashboard
Hi I need create a dashboard with conection with a web service and whitout establish a range in excel, so be displayed on the dashboard n rows returned by the web service.
how can I do this?Hi Ezequiel,
I agree with Alan.
You might find it useful to read the Xcelsius 2008 Best Practices whitepaper: [https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a084a11c-6564-2b10-79ac-cc1eb3f017ac]
Regards,
Matt -
Serialization error while returning Value Object from Web Service
Hi
I have developed a sample Web Service (RPC based), it returns Customer Value Object
when client calls getCustomer method.
I have written a Client (attached the client source code) to invoke the web service
when the client invokes the Web Service it throws an Exception , the Exception
Exception in thread "main" serialization error: no serializer is registered for
(null, {java:customer}Customer)
at com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer(DynamicInternalTypeMappingRegistry.java:62)
at com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPResponseSerializer.java:72)
at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(ReferenceableSerializerImpl.java:47)
at com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCall.java:382)
at com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.java:364)
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)
at ClientwithWSDL.main(ClientwithWSDL.java:63)
CAUSE:
no serializer is registered for (null, {java:customer}Customer)
at com.sun.xml.rpc.encoding.TypeMappingUtil.getSerializer(TypeMappingUtil.java:41)
at com.sun.xml.rpc.encoding.InternalTypeMappingRegistryImpl.getSerializer(InternalTypeMappingRegistryImpl.java:287)
at com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer(DynamicInternalTypeMappingRegistry.java:47)
at com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPResponseSerializer.java:72)
at com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(ReferenceableSerializerImpl.java:47)
at com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCall.java:382)
at com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.java:364)
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)
at ClientwithWSDL.main(ClientwithWSDL.java:63)
If someone can help me to fix the issue, it will be great.
Thanks
Jeyakumar Raman.I guess, this is because the RI client is not finding the
codec to ser/deser your Value Object. You need to register
the codec in the type mapping registry before you invoke
the web service method.
Here is a sample:
Service service = factory.createService( serviceName );
TypeMappingRegistry registry = service.getTypeMappingRegistry();
TypeMapping mapping = registry.getTypeMapping(
SOAPConstants.URI_NS_SOAP_ENCODING );
mapping.register( SOAPStruct.class,
new QName( "http://soapinterop.org/xsd", "SOAPStruct" ),
new SOAPStructCodec(),
new SOAPStructCodec() );
BTW, you can do the same exact thing on the client by using
WLS impl of JAX-RPC. Is there a reason for using RI on the
client side?
regards,
-manoj
"Jeyakumar Raman" <[email protected]> wrote in message news:[email protected]...
Hi Manoj,
Thanks for your information, Yes, my client is Sun's JAX-RPC based, but the Server
Implementation is done using Weblogic 7.0. When I invoke the Client without WSDL.
It works fine without any problem. But when I invoke the webservice using WSDL,
I am getting this problem.
Here is my Client Code :
* This class demonstrates a java client invoking a WebService.
import java.net.URL;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Service;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.namespace.QName;
import customer.Customer;
public class ClientwithWSDL {
private static String qnameService = "CustomerService";
private static String qnamePort = "CustomerServicePort";
private static String BODY_NAMESPACE_VALUE =
"http://jeyakumar_3957:7001/Customer";
private static String ENCODING_STYLE_PROPERTY =
"javax.xml.rpc.encodingstyle.namespace.uri";
private static String NS_XSD =
"http://www.w3.org/2001/XMLSchema";
private static String URI_ENCODING =
"http://schemas.xmlsoap.org/soap/encoding/";
private static String method="getCustomer";
private static String endpoint="http://jeyakumar_3957:7001/webservice/CustomerService?WSDL";
public static void main(String[] args) throws Exception {
// create service factory
ServiceFactory factory = ServiceFactory.newInstance();
// define qnames
QName serviceName =new QName(BODY_NAMESPACE_VALUE, qnameService);
QName portName = new QName(BODY_NAMESPACE_VALUE, qnamePort);
QName operationName = new QName("",method);
URL wsdlLocation = new URL(endpoint);
// create service
Service service = factory.createService(wsdlLocation, serviceName);
// create call
Call call = service.createCall(portName, operationName);
// invoke the remote web service
Customer result = (Customer) call.invoke(new Object[0]);
System.out.println("\n");
System.out.println(result);
"manoj cheenath" <[email protected]> wrote:
>
>
>Hi Jayakumar,
>
>From the stack trace it looks like you are using sun's
>RI of JAX-RPC. I am not sure what is going wrong with RI.
>
>WLS 7.0 got its own implementation of JAX-RPC. Check
>out the link below for details:
>
>http://edocs.bea.com/wls/docs70/webserv/index.html
>
>
>Let us know if you need more details.
>
>--=20
>
>regards,
>-manoj
>
>
>
> "Jeyakumar" <[email protected]> wrote in message =
>news:[email protected]...
>
> Hi
>
> I have developed a sample Web Service (RPC based), it returns Customer
>=
>Value Object
> when client calls getCustomer method.
>
> I have written a Client (attached the client source code) to invoke
>=
>the web service
> when the client invokes the Web Service it throws an Exception , the
>=
>Exception
>
>
> Exception in thread "main" serialization error: no serializer is =
>registered for
> (null, {java:customer}Customer)
> at =
>com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer=
>(DynamicInternalTypeMappingRegistry.java:62)
>
> at =
>com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPRespo=
>nseSerializer.java:72)
> at =
>com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(Reference=
>ableSerializerImpl.java:47)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCal=
>l.java:382)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.ja=
>va:364)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)
> at ClientwithWSDL.main(ClientwithWSDL.java:63)
>
> CAUSE:
>
> no serializer is registered for (null, {java:customer}Customer)
> at =
>com.sun.xml.rpc.encoding.TypeMappingUtil.getSerializer(TypeMappingUtil.ja=
>va:41)
> at =
>com.sun.xml.rpc.encoding.InternalTypeMappingRegistryImpl.getSerializer(In=
>ternalTypeMappingRegistryImpl.java:287)
> at =
>com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer=
>(DynamicInternalTypeMappingRegistry.java:47)
>
> at =
>com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPRespo=
>nseSerializer.java:72)
> at =
>com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(Reference=
>ableSerializerImpl.java:47)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCal=
>l.java:382)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.ja=
>va:364)
> at =
>com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)
> at ClientwithWSDL.main(ClientwithWSDL.java:63)
>
> If someone can help me to fix the issue, it will be great.
>
> Thanks
> Jeyakumar Raman.
>
>
><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
><HTML><HEAD>
><META http-equiv=3DContent-Type content=3D"text/html; =
>charset=3Diso-8859-1">
><META content=3D"MSHTML 6.00.2713.1100" name=3DGENERATOR>
><STYLE></STYLE>
></HEAD>
><BODY bgColor=3D#ffffff>
><DIV><FONT face=3DCourier size=3D2>Hi Jayakumar,</FONT></DIV>
><DIV><FONT face=3DCourier size=3D2></FONT> </DIV>
><DIV><FONT face=3DCourier size=3D2>From the stack trace it looks like
>=
>you are using=20
>sun's</FONT></DIV>
><DIV><FONT face=3DCourier size=3D2>RI of JAX-RPC. I am not sure
>=
>what is going=20
>wrong with RI.</FONT></DIV>
><DIV><FONT face=3DCourier size=3D2></FONT> </DIV>
><DIV><FONT face=3DCourier size=3D2>WLS 7.0 got its own implementation
>of =
>
></FONT><FONT face=3DCourier size=3D2>JAX-RPC. Check</FONT></DIV>
><DIV><FONT face=3DCourier size=3D2>out the link below for =
>details:</FONT></DIV>
><DIV><FONT face=3DCourier size=3D2></FONT><FONT face=3DCourier=20
>size=3D2></FONT> </DIV>
><DIV><FONT face=3DCourier size=3D2><A=20
>href=3D"http://edocs.bea.com/wls/docs70/webserv/index.html">http://edocs.=
>bea.com/wls/docs70/webserv/index.html</A></FONT></DIV>
><DIV><FONT face=3DCourier size=3D2></FONT> </DIV>
><DIV><FONT face=3DCourier size=3D2></FONT> </DIV>
><DIV><FONT face=3DCourier size=3D2>Let us know if you need more=20
>details.</FONT></DIV>
><DIV><BR>-- <BR><BR>regards,<BR>-manoj</DIV>
><DIV> </DIV>
><DIV><BR> </DIV>
><BLOCKQUOTE=20
>style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
>BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
> <DIV>"Jeyakumar" <<A=20
> href=3D"mailto:[email protected]">[email protected]</A>>
>=
>wrote in=20
> message <A=20
> =
>href=3D"news:[email protected]">news:[email protected]=
>a.com</A>...</DIV><BR>Hi<BR><BR>I=20
> have developed a sample Web Service (RPC based), it returns Customer
>=
>Value=20
> Object<BR>when client calls getCustomer method.<BR><BR>I have written
>=
>a Client=20
> (attached the client source code) to invoke the web service<BR>when
>=
>the client=20
> invokes the Web Service it throws an Exception , the=20
> Exception<BR><BR><BR>Exception in thread "main" serialization error:
>=
>no=20
> serializer is registered for<BR>(null,=20
> {java:customer}Customer)<BR>
>=
>at=20
> =
>com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer=
>(DynamicInternalTypeMappingRegistry.java:62)<BR><BR> &nb=
>sp; =20
> at=20
> =
>com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPRespo=
>nseSerializer.java:72)<BR> =20
> at=20
> =
>com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(Reference=
>ableSerializerImpl.java:47)<BR> =
>=20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCal=
>l.java:382)<BR> =20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.ja=
>va:364)<BR> =20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)<BR> =
> =20
> at ClientwithWSDL.main(ClientwithWSDL.java:63)<BR><BR>CAUSE:<BR><BR>no
>=
>
> serializer is registered for (null,=20
> {java:customer}Customer)<BR>
>=
>at=20
> =
>com.sun.xml.rpc.encoding.TypeMappingUtil.getSerializer(TypeMappingUtil.ja=
>va:41)<BR> =20
> at=20
> =
>com.sun.xml.rpc.encoding.InternalTypeMappingRegistryImpl.getSerializer(In=
>ternalTypeMappingRegistryImpl.java:287)<BR> =
> =20
> at=20
> =
>com.sun.xml.rpc.encoding.DynamicInternalTypeMappingRegistry.getSerializer=
>(DynamicInternalTypeMappingRegistry.java:47)<BR><BR> &nb=
>sp; =20
> at=20
> =
>com.sun.xml.rpc.encoding.soap.SOAPResponseSerializer.initialize(SOAPRespo=
>nseSerializer.java:72)<BR> =20
> at=20
> =
>com.sun.xml.rpc.encoding.ReferenceableSerializerImpl.initialize(Reference=
>ableSerializerImpl.java:47)<BR> =
>=20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.createRpcResponseSerializer(BasicCal=
>l.java:382)<BR> =20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.getResponseDeserializer(BasicCall.ja=
>va:364)<BR> =20
> at=20
> =
>com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:259)<BR> =
> =20
> at ClientwithWSDL.main(ClientwithWSDL.java:63)<BR><BR>If someone can
>=
>help me=20
> to fix the issue, it will be great.<BR><BR>Thanks<BR>Jeyakumar=20
>Raman.</BLOCKQUOTE></BODY></HTML>
>
>
[att1.html] -
Returning table structure from Web Service...
Hi,
I have a web service which retrieves data from a database table. I want to use this web service from my Visual Composer to display the data on the screen.
I want to know how to return the table structure from my web service. Currently i am returning a string array (only one row of data) from my web service and displaying it in the VC. But i want to include the names of the columns as well.
I tried using 2D String[] and HashMap, both didn't work for me.
Any ideas?
Regards,
VenkatHi Venkat,
I recommend to pass the headers in seperat variables and the data table in a array.
I did something similar, without the header, because they are fixed in my scenario.
This webservice returns a list of all Portal Roles:
public roleModel[] getRoles() throws Exception{
// Array List as return value
ArrayList RoleList = new ArrayList();
// Try Block reading portal roles
try {
IRoleFactory rfact = UMFactory.getRoleFactory();
// Filter for PortalRoles
IRoleSearchFilter roleFilter = rfact.getRoleSearchFilter();
// Search for *
roleFilter.setUniqueName("*", ISearchAttribute.EQUALS_OPERATOR, false);
// Search all Roles
ISearchResult resultList = rfact.searchRoles(roleFilter);
// return the result list
if (resultList.getState() == ISearchResult.SEARCH_RESULT_OK) {
while (resultList.hasNext()) {
// read roleUid
String roleUid = (String) resultList.next();
// create roleObject for roleUid
IRole roleObject = rfact.getRole(roleUid);
// instantiate new role for ArrayList
roleModel rolle = new roleModel();
// read DisplayName and UniqeID
rolle.setRole(roleObject.getDisplayName());
rolle.setRoleID(roleObject.getUniqueID());
rolle.setDescription(roleObject.getDescription());
// add object to ArrayList
RoleList.add(rolle);
// create new array from data type model roleModel (class)
// in the correspoding size
roleModel[] returnList = new roleModel[RoleList.size()];
// write ArrayList back to array
RoleList.toArray(returnList);
// return all portal roles
return returnList;
// exception handling
} catch (Exception e) {
throw new Exception(e);
Hope that helps!
Best Regards,
Marcel
Maybe you are looking for
-
I previously was able to drag and drop BBC podcasts from iPlayer to a Creative MP3 player. This doesn't seem to work with the new Sony player I have bought. The podcasts work OK, in that they sit in the podcasts folder on Apple library, but all I get
-
EWA report generation in Solution Manager 7.1 SP12
Hi Friends, I am done with Managed System Configuration.. Now I need to generate EWA reports for the same. But I am getting some inputs that, EWA is automatically configured in Managed System Configuration itself. Can you guys suggest me accordingly.
-
I cannot log onto my AppleTV. It asks for an Apple ID password. Then the screen freezes.
-
HI: I want to write some error messages in PR exit, But while checking the PR ,only one error message would be displayed when many items for this PR could not met the needs of the condition writen in PR exit. Does there a way we can use to disp
-
Adding nuew column to Oracle Projects Workplan Gantt
Hi all, I need help in adding a column to the gantt table in the workplan tab on Oracle Projects module. I need to add a description column near task-number column. I've followed the standard personalization procedure: Personalize page, select the ta