Retun of object or Array From webservice
Thanks pekka,
you are right...
It is also possible to manage the ByteStream by returning the byte[] array from web services, but the issue is when the response reaches to the client... the invoke method returns object ...as
byte[] ret = (byte[]) call.invoke( new Object[] { "Any String" } );
At this point the axis server throws an error.... regarding the cast of Object type to byte array... (ClassCastException)... Due to this error i thought to return ByreArrayOutputStream object from webservice function......
Although the return of byte[] will also work for me.... but the wholw issue struck at client at client side during typecasting of returned object from web services.....
please suggest any solution.... for its casting...
Thanks Very much...
Gaurav
Dear jpday,
Have you seen this tutorial?
Web Services in LabVIEW
http://zone.ni.com/devzone/cda/tut/p/id/7350
attached to it you will find a zip file named webservicesdemo. This demo contains a VI called Function Generator Main, which shows how to convert an array to an XML string, which you can then output from the web service VI (Function Generator Main shows how to do this).
Hope this helps!
~Nate
Similar Messages
-
How can i return an object isn't java object from webservice????
Hi !
I have a problem in my Project. When i call method return a java object from webservice , it 's too easy. But when i create my own object (ex:ClientRequest.class) , it doesn't work exactly T_T . When i return that object (on client, doesn't have ClientRequest.class) , i cann't access its static variables.
How can i do it ??
Please help me !
Thanks a lot !!!!!
class ClientRequest {
public static int i;
public static String s;
public ClientRequest() {
}You can use REFCURSOR type for this. In java SQL TYPES this is available too. In your PLSQL use REFCURSOR for that array and then take the same from java code. Look in the servelet programming book for this SQLTYPE and see PLSQL for handling refcursors. We have done this way and it works.
-
How get java Object from webservice
Hai
i gave ArrayList<bean> , i can't get this ArrayList<bean> from webservice. How can i get ? via for each or iterator or any ?????
Note: i iterated but only one element was come from bean property using next() of iterator .
I need all property. any one please help.
thanks
Mr...JavanTry to return an Array instead of an ArrayList?
Have a look at http://forums.sun.com/thread.jspa?forumID=331&threadID=5289022. -
Passing Array of java objects to and from oracle database-Complete Example
Hi all ,
I am posting a working example of Passing Array of java objects to and from oracle database . I have struggled a lot to get it working and since finally its working , postinmg it here so that it coudl be helpful to the rest of the folks.
First thinsg first
i) Create a Java Value Object which you want to pass .
create or replace and compile java source named Person as
import java.sql.*;
import java.io.*;
public class Person implements SQLData
private String sql_type = "PERSON_T";
public int person_id;
public String person_name;
public Person () {}
public String getSQLTypeName() throws SQLException { return sql_type; }
public void readSQL(SQLInput stream, String typeName) throws SQLException
sql_type = typeName;
person_id = stream.readInt();
person_name = stream.readString();
public void writeSQL(SQLOutput stream) throws SQLException
stream.writeInt (person_id);
stream.writeString (person_name);
ii) Once you created a Java class compile this class in sql plus. Just Copy paste and run it in SQL .
you should see a message called "Java created."
iii) Now create your object Types
CREATE TYPE person_t AS OBJECT
EXTERNAL NAME 'Person' LANGUAGE JAVA
USING SQLData (
person_id NUMBER(9) EXTERNAL NAME 'person_id',
person_name VARCHAR2(30) EXTERNAL NAME 'person_name'
iv) Now create a table of Objects
CREATE TYPE person_tab IS TABLE OF person_t;
v) Now create your procedure . Ensure that you create dummy table called "person_test" for loggiing values.
create or replace
procedure give_me_an_array( p_array in person_tab,p_arrayout out person_tab)
as
l_person_id Number;
l_person_name Varchar2(200);
l_person person_t;
l_p_arrayout person_tab;
errm Varchar2(2000);
begin
l_p_arrayout := person_tab();
for i in 1 .. p_array.count
loop
l_p_arrayout.extend;
insert into person_test values(p_array(i).person_id, 'in Record '||p_array(i).person_name);
l_person_id := p_array(i).person_id;
l_person_name := p_array(i).person_name;
l_person := person_t(null,null);
l_person.person_id := l_person_id + 5;
l_person.person_name := 'Out Record ' ||l_person_name ;
l_p_arrayout(i) := l_person;
end loop;
p_arrayout := l_p_arrayout;
l_person_id := p_arrayout.count;
for i in 1 .. p_arrayout.count
loop
insert into person_test values(l_person_id, p_arrayout(i).person_name);
end loop;
commit;
EXCEPTION WHEN OTHERS THEN
errm := SQLERRM;
insert into person_test values(-1, errm);
commit;
end;
vi) Now finally create your java class which will invoke the pl/sql procedure and get the updated value array and then display it on your screen>Alternatively you can also check the "person_test" tbale
import java.util.Date;
import java.io.*;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class ArrayDemo
public static void passArray() throws SQLException
Connection conn = getConnection();
ArrayDemo a = new ArrayDemo();
Person pn1 = new Person();
pn1.person_id = 1;
pn1.person_name = "SunilKumar";
Person pn2 = new Person();
pn2.person_id = 2;
pn2.person_name = "Superb";
Person pn3 = new Person();
pn3.person_id = 31;
pn3.person_name = "Outstanding";
Person[] P_arr = {pn1, pn2, pn3};
Person[] P_arr_out = new Person[3];
ArrayDescriptor descriptor =
ArrayDescriptor.createDescriptor( "PERSON_TAB", conn );
ARRAY array_to_pass =
new ARRAY( descriptor, conn, P_arr);
OracleCallableStatement ps =
(OracleCallableStatement )conn.prepareCall
( "begin give_me_an_array(?,?); end;" );
ps.setARRAY( 1, array_to_pass );
ps.registerOutParameter( 2, OracleTypes.ARRAY,"PERSON_TAB" );
ps.execute();
oracle.sql.ARRAY returnArray = (oracle.sql.ARRAY)ps.getArray(2);
Object[] personDetails = (Object[]) returnArray.getArray();
Person person_record = new Person();
for (int i = 0; i < personDetails.length; i++) {
person_record = (Person)personDetails;
System.out.println( "row " + i + " = '" + person_record.person_name +"'" );
public static void main (String args[]){
try
ArrayDemo tfc = new ArrayDemo();
tfc.passArray();
catch(Exception e) {
e.printStackTrace();
public static Connection getConnection() {
try
Class.forName ("oracle.jdbc.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@<<HostNanem>>:1523:VIS",
"username", "password");
catch(Exception SQLe) {
System.out.println("IN EXCEPTION BLOCK ");
return null;
and thats it. you are done.
Hope it atleast helps people to get started. Comments are appreciated. I can be reached at ([email protected]) or [email protected]
Thanks
Sunil.sHi Sunil,
I've a similar situation where I'm trying to insert Java objects in db using bulk insert. My issue is with performance for which I've created a new thread.
http://forum.java.sun.com/thread.jspa?threadID=5270260&tstart=30
I ran into your code and looked into it. You've used the Person object array and directly passing it to the oracle.sql.ARRAY constructor. Just curios if this works, cos my understanding is that you need to create a oracle.sql.STRUCT out of ur java object collection and pass it to the ARRAY constructor. I tried ur way but got this runtime exception.
java.sql.SQLException: Fail to convert to internal representation: JavaBulkInsertNew$Option@10bbf9e
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.oracore.OracleTypeADT.toDatum(OracleTypeADT.java:239)
at oracle.jdbc.oracore.OracleTypeADT.toDatumArray(OracleTypeADT.java:274)
at oracle.jdbc.oracore.OracleTypeUPT.toDatumArray(OracleTypeUPT.java:115)
at oracle.sql.ArrayDescriptor.toOracleArray(ArrayDescriptor.java:1314)
at oracle.sql.ARRAY.<init>(ARRAY.java:152)
at JavaBulkInsertNew.main(JavaBulkInsertNew.java:76)
Here's a code snippet I used :
Object optionVal[] = {optionArr[0]}; // optionArr[0] is an Option object which has three properties
oracle.sql.ArrayDescriptor empArrayDescriptor = oracle.sql.ArrayDescriptor.createDescriptor("TT_EMP_TEST",conn);
ARRAY empArray = new ARRAY(empArrayDescriptor,conn,optionVal);If you visit my thread, u'll see that I'm using STRUCT and then pass it to the ARRAY constructor, which works well, except for the performance issue.
I'll appreciate if you can provide some information.
Regards,
Shamik -
Access the object array from client.
I'm trying to access the object array from client.
it's throwing the following error,
RemoteException Ocuredjava.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.MarshalException: CORBA BAD_PARAM 0x4f4d0006 Maybe; nested exception is:
java.io.NotSerializableException: oracle.jdbc.driver.OracleResultSetImpl is not serializable
how to resolve it?
thanx in advance,
Ilam.Don't send a ResultSet back as the result of an RMI call. Extract the data from the ResultSet on the server and send that back instead.
-
Reference HttpServlet object from webservice method ...
How to reference HttpServlet object from webservice method to access HTTP header?
Thanks
MarcelYou are correct.
I know that SOAP messages can be send not only via HTTP protocol.
Our solution is restricted to use only HTTP protocol for communication between client and server by customer, because there is implemented transparent proxy for users authorization and strong security of communication via HTTP protocol. Authorization server transparently modify HTTP request header with user identity (DN from user certificate - with this PKI solution it is not possible to use standard SSL because certificate is proprietary enhanced and cannot be accessed in standard way). That is why I need access HTTP request header.
Why I want to use webservices? I thing that webservice is flexible and perspective technology for integration and asynchronous communication between web clients and application (it is really more effective add new info in web page asynchronously from webservice than reload whole page).
Thanks
Marcel -
Passing array to webservice.
I'm trying to pass an ArrayCollection of business object to a
(.NET) webservice method which is expecting an array of business
objects of the same structure I am sending. When I call the service
method only one object is in the array. It is of the correct type.
The other objects are not sent.
I am trying to do a prototype to convince the technical
architect that this product is worth pursuing (which I think it is)
so I haven't time to spend a couple of days figuring these details
out ie. I'm not just being lazy here!;-)
TIAFun, i hate selling technology to directors, isnt that there
job to learn whats new?!
But, adurkin here is what you need to do. It doesnt matter
what you pass to and from the service, its a matter of making sure
your objects match between flex and .net. Also make sure the
service you are using in flex is set to handle OBJECTS by setting
the result format to object for each of the functions you have
hanging off your service.
<mx:WebService id="WS" wsdl="
http://localhost:49753/Test_Application/App_Common/Services/ProductSearch.asmx?WSDL"
useProxy="false"
fault="Alert.show(event.fault.faultString), 'Error'"
result="onResult(event)" >
<mx:operation name="MyFunctionName"
resultFormat="object">
</mx:operation>
</mx:WebService>
Let me know if this helps, if it doesnt ill send over an
example leave me your email.
-Ryan -
How to get an ArrayList Object in servlet from JSP?
How to get an ArrayList Object in servlet from JSP?
hi all
please give the solution for this without using session and application...
In test1.jsp file
i am setting values for my setter methods using <jsp:usebean> <jsp:setproperty> tags as shown below.
After that i am adding the usebean object to array list, then using request.setAttribute("arraylist object")
---------Code----------
<jsp:useBean id="payment" class="com.common.PaymentHandler" scope="request" />
<jsp:setProperty name="payment" property="strCreditCardNo" param="creditCardNumber" />
<%-- <jsp:setProperty name="payment" property="iCsc" param="securityCode" /> --%>
<jsp:setProperty name="payment" property="strDate" param="expirationDate" />
<jsp:setProperty name="payment" property="strCardType" param="creditCardType" />
<%--<jsp:setProperty name="payment" property="cDeactivate" param="deactivateBox" />
<jsp:setProperty name="payment" property="fAmount" param="depositAmt" />
<jsp:setProperty name="payment" property="fAmount" param="totalAmtDue" /> --%>
<jsp:useBean id="lis" class="java.util.ArrayList" scope="request">
<%
lis.add(payment);
%>
</jsp:useBean>
<%
request.setAttribute("lis1",lis);
%>
-----------Code in JSP-----------------
In testServlet.java
i tried to get the arraylist object in servlet using request.getAttribute
But I unable to get that arrayObject in servlet.....
So if any one help me out in this, it will be very helpfull to me..
Thanks in Advance
EdwardHi,
Im also facing the similar problen
pls anybody help..
thax in advance....
Litty -
Passing an array from Java to Pl/SQL Procdures
I am relatively new to the Java world and I am unable to pass back an array from Java back to the calling PL/SQL procedure. I have read many of the posts that deal with this issue and in specificly have viewed Ask Tom. My main issue is trying to get the data types matched up. I am able to return varchar2, numbers, and the like, but an array of filenames is not happening. I have tried a variety of "types" but unable to accomplish the task. Please help.
I have my Java class basically defined as:
public static oracle.sql.ARRAY[] getCollection(String directory)
throws SQLException
{ // provide a directory and get a listing of files
File path = new File( directory );
String[] list = path.list();
return list;
SQL Type and PL/SQL Procedure is:
CREATE OR REPLACE TYPE PTO_FILE IS TABLE OF VARCHAR2(100);
create or replace function get_dir_collection( p_directory in varchar2 ) RETURN PTO_FILE
as language java
name 'DirCollection.getCollection( java.lang.String ) return oracle.sql.ARRAY[]';
/I know that it is not an ARRAY. It is however an "array" and I am attempting to map Java's String[][ to some "object" on the oracle side. I have looked at the link you sited and was not able to find the data mapping. I have found that mapping data types between different "languages" is some of the most difficult aspects of working with multiple languages.
Any suggestions? Thanks -
Passing array from JS to method of applet
There is unable in IE pass array of values from javascript to method of applet, but in Mozilla it's working fine. In IE i have got exception:
Exception:
java.lang.Exception: setTest{0} :no such method exists
at sun.plugin.com.JavaClass.getMethod1(Unknown Source)
at sun.plugin.com.JavaClass.getDispatcher(Unknown Source)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
java.lang.Exception: java.lang.Exception: setTest{0} :no such method exists
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
JavaScript code:
var testArr=[];
testArr[0]=1;
testArr[1]=2;
testArr[2]=3;
document.sync.setTest(testArr);
Applet method:
public void setTest(Object[] test){
System.out.println("Test "+test.length);
for (Object o: test){
System.out.println(o.toString());
}How do passing in IE?yes, MAYSCRIPT just allow to call methods. but as i know it's unable to pass simply array from js to applet and from applet to js. so i convert array of values to String and in applet i use StringTokenizer to parsing. Thanks. ;)
-
Passing an array from one jsp page to another.
I need to pass an array from one page to another, without using the query string.
Can anyone help?
I was given one suggestion about putting the array inside a Map object, then putting the map in the session.
Is there an alternative? i am struggling to find out how to use maps properly.
Alternatively, could someone give me a pointer on how to implement this possibility?
Help needed ASAP.
ThankyouFirst.jsp
String[] str = {1,2,3,4,5};
session = request.getSession(true);
session.setAttribute("str",str); //or application.setAttribute("str",str);
Second.jsp
session = request.getSession();
String str[] = (String[])session.getAttribute("str"); //or String str[] = (String[]) application.getAttribute("str");
Now you can use str[].
Sudha -
Need example on passing an XML object to a JWS webservice
Hello,
Does anyone have an example on how to pass an xml object to a JWS webservice?
I have created a webservice and passed parameters as such:
https://myserver.test.com:7777/lookups/lookups_db/AmsDBClient.jws/getStaffInformation?userName=kkwiatek
But there has got to be a way to pass an xml object, right? How?
Thanks,
KeithAs an example of a JWS that expects and XML Object, try a method like the following:
public XmlObject simpleXmlObject(noNamespace.PurchaseOrderDocument poDoc){
return XmlObject.Factory.parse("<newXml>"+poDoc.xmlText()+"</newXml>");
where noNamespace.PurchaseOrderDocument comes from compiling the po.xsd that is available in the W3C XML Schema spec.
From your URL it appears you are trying to use a REST style web service. Is this correct?
You will NOT be able to invoke this method via a get query like you mention below. For you to invoke this method you should use SOAP over HTTP.
Are you still having problems with this? -
Good design choice, different types of customers, from webservice
Hi, I have thoughts about good design pattern, when doing this:
You have a webservice where customers coming into your system. The customers are private ones, business ones, and big business types.
These 3 customer types has different needs, and must have different values like companyname, social security number, etc etc.
The customer also has some shared types, like customerid, created, updated, etc.
So what you want to do is to have an interface or an abstract class containing common methods for the customer, then you will create subclasses for the different types.
I was thinking about creating a factory class and pass in the customer object retreived from the webservice, and in the factory process method create objects on the different subclasses based on what kind of object you get in (private, business, etc).
So, webservice gets a private customer object, you serialize it and then you pass it into your factory class. And back you get a customer object.
Now you want to do business logic on the object, storing it to a database, etc.
So you might still have to create different scenarios based on if its customer type.
The basic idea is that you want to get the object from webservice, pass it to a factory and get back a customer object which you want to do things with.
What do you think, what is a good design solution to the problem described?To be clear "pattern" has a specific meaning. Your description is a design not a pattern.
Is the small business one never going to become a big business one?
Is a big business one never going to become a small business one?
If the answer to either is yes, then you have one entity with different attributes, not two.
I have no idea why serialization would matter in this. And your description doesn't explain that either. If you are talking about communication between different boxes then you need a communication layer (and it doesn't appear you are at the level yet where you need to decide the specifics of how that is handled.)
It is unclear why you would want a factory. But if you just want the experience then you could probably use it.
Your description isn't nearly complete enough to define how the overall system should behave which is what you seem to be also describing. You need to seperate what the system will do for how it will do it (the design.) -
Adding data to array from an empty query
I am trying to add data to an array from a database query, however some queries will return no data (empty set). In that case I would like to add fake data so that the index size matches my other array (assetsid).
Thank you for your time.
int f2a=0;
String[] exportedtime;
String[] exportedtime_formated;
ArrayList exportedtime_ar = new ArrayList(f2a);
ArrayList exportedtime_formated_ar = new ArrayList(f2a);
for (int jj=0; jj<assetsid_ar.size(); jj++)
String eng_id_out = (String) eng_id_h2a_ar.get(jj);
String fuel2a = "select engineserialnumber, TO_CHAR(exportedtime, 'MM/DD/YYYY HH24:MI:SS') exportedtime, TO_CHAR(exportedtime, 'DD/MON/YY') as exportedtime_formated from tblexportedjobs where exportid = (select max(exportid) from tblexportedjobs where engineserialnumber = "+eng_id_out+") and engineserialnumber = "+eng_id_out+"";
ResultSet fuel2a_myResultSet = stmt.executeQuery(fuel2a);
while (fuel2a_myResultSet.next()) {
f2a=f2a+1;
exportedtime = new String[f2a+1];
exportedtime_formated = new String[f2a+1];
exportedtime[f2a]=fuel2a_myResultSet.getString("exportedtime");
exportedtime_formated[f2a]=fuel2a_myResultSet.getString("exportedtime_formated");
if (exportedtime[f2a].equals("")) {
exportedtime[f2a] = "01/01/2004 00:01:01";
} else {
exportedtime[f2a] = exportedtime[f2a];
exportedtime_ar.add(exportedtime[f2a]);
if (exportedtime_formated[f2a].equals("")) {
exportedtime_formated[f2a] = "01/JAN/04";
} else {
exportedtime_formated[f2a] = exportedtime_formated[f2a];
exportedtime_formated_ar.add(exportedtime_formated[f2a]);
}I'd be curious to know if it would be possible to rewrite your query using a JOIN so you could get all the data in one query. The way you've written it will require N network round trips, where N is the number of engine serial numbers. I wonder if clever application of a JOIN with a GROUP BY would do the trick in one?
I don't care for the formatting stuff you're doing, either. There's no need to ask the database for that. Bring the dates over and handle the formatting in Java using java.text.SimpleDateFormat. Less work for the database AND it won't be so tied to Oracle, since you won't need that TO_CHAR function anymore.
I'd give clients the raw java.sql.Date and let them worry about formatting it the way they wish. That's not a persistence concern.
I always prefer data structures like List and Map when I'm working with database result sets. They grow to fit the # of records that I get back. If I want arrays, I can always use the toArray() method to generate them. -
How can i get a array from a JSP ?
Hi all,
i have a STORED PROCEDURE like this:
static public void getMyArray(double [] xx) {
for (int i=0; i<myarr.length;i++){
myarr=3.145*i;
xx=myarr;
return ;
how can i get the array with XSQL and transform with a XSL ?
Is this at all possible?
Thanks for any help.
Achimu r asking how ca u get array from jsp?
and u r asking xsql ...some stuff i couldnot understand .can u repeat the question properly?
null
Maybe you are looking for
-
The question says it all. I found a laptop sleeve, but I don't know what the average size (in inches) of a 4 year old macbook. Is it about 10 or 12"?
-
Hello everybody. I have installed Oracle Database 10.2.1, Http server that comes with its companion cd, APEX 3.0.1, OC4J Standalone and Apache FOP, all in one computer. Now all good except by ORMI server that dont work enough good. All this in Linux
-
XML To text conversion and send it through Email
hi, I have an IDOC -xi - http receiver 1. In HTTP Response (xml based) i get a status code and text in the tag. The above response has to be appended to a <b>message</b> that should be in the following format(should be in text): Vendor Name: ABC PO N
-
[SOLVED] "Open Containing Folder" Issue in Fluxbox
Hello! I am fairly new to Arch so any help is greatly appreciated. I am using fluxbox as my window manager and thunar as my file manager. When I right click on a song in banshee and select "Open Containing Folder" the folder is opened in firefox whic
-
Where can I get more information about website based apps for the iPhone?
I just forgot and cannot seem to remember what the pages on the web for the iPhone are called. They are interactive and designed for use on the iPhone but are there, called up from the safari browser. I'm looking for a good interactive chess game sit