User defined Exception in Stateless Java Class WS

Hi,
I'm experimenting with publishing some of my application's Java classes as web services under OC4J 10.1.2. I've been quite successfull to do so, but I'm stuck into a problem trying to have my class's methods throw my own type of exception and retrieving it at the client side.
I'm using the proxies downloaded from the web service's automatic HTML page, and I see in the source code version that the proxy class specifically throws a org.apache.soap.SOAPException whenever there's a fault in the response message.
What I've done is simply to create a type derived from Exception with a String (message) and an Integer (code) properties, with just my own constructor that accepts two parameters corresponding to that properties. Then I make the methods in my Java class throw that exception.
I've tried both using both an Interface and a class, and also using just a class as parameters to StatelessWebServiceServlet / Web Service Assembler.
I can't find anywhere in any docs that explains how this can be done in OC4J. I believe that throwing user-defined exceptions is included in J2EE 1.4 and so I think that there should be a way to do it in OC4J if it is compliant. Maybe there's no way, but I couldn't find any reference to that neither.
I'll greatly appreciate any light on this issue.
Thanks in advance
Juan Alvarez Ferrando
Mensaje editado por:
user517323

Thank you for your answer.
I'd like to know something more about how far does that limited support go, in case it could be of some use.
On the other hand, and just for the sake of constructive discussion, though I've contemplated the option of encoding error conditions on the result type, I always found that to be an ugly style from a interface design standpoint (not ws specifically but in general system desing terms), and when I saw a standard way to communicate custom error information separated from normal response I thought it to be the right way to go. After all, exceptions are just the way Java implements this design principle that has also found a place in most currently successful software environments (PL/SQL, .Net, ...).
I don't expect to extend the meaning and programmatic use of Java exceptions to my ws clients, but to be able to communicate detailed error condition information as the standards contemplate (faults), which as I understand from your kind answer is out of my reach in 10.1.2.
I have no experience with other ws platforms but I'd like to believe that if wsdl:fault is in the standards, those claming compliance will support it to the extent necessary to make it usable and interoperable as it is the way the standard covers error communication (and so that's why it is included in 10.1.3). I also beleve this would bring better interoperability than our home-made result types including error information, that no other application without our custom specifications can understand.
Also better interoperability would come from that than for example what I now see in 10.1.2, where all exceptions are communicated to the client with a faultcode of soap:Server, which I believe to have the standard meaning that there's a chance for the client to success retrying later without modifying it's request. This translation could be better suited for Java errors (unrecoverable) but not for all kinds of exceptions, and so in this question, custom exception support could also improve interoperability with systems that interpret SOAP fault codes.
Thank you.
Juan Alvarez Ferrando

Similar Messages

  • SQL user defined type mapping with Java Class type

    SECRET_TAB_TYPE is userdefined type in SQL Schema. but accessing this way it is giving invalid column type error(see code below )??
    I have made a class with same name attributes as in SQL Type
    Connection con = DriverManager.getConnection(URL,Username, Password );
    java.util.Map map = con.getTypeMap();
    map.put("SchemaName.SECRET_TAB_TYPE",Class.forName("SECRET_TAB_TYPE"));
    CallableStatement pstmt = con.prepareCall( "{ call smartapi.FetchSharedSecret(?,?,?,?,?,?) }" );
    pstmt.setString(1,"SM");
    pstmt.setString(2,"BT");
    pstmt.setString(3,"COM");
    pstmt.registerOutParameter(4, Types.JAVA_OBJECT);//
    pstmt.registerOutParameter(5,Types.VARCHAR);
    pstmt.executeQuery();
    secret_tab=(SECRET_TAB_TYPE)pstmt.getObject(4);
    message= pstmt.getString(5);

    STATS_T_TEST_
    docs.oracle.com/cd/B19306_01/server.102/b14200/functions157.htm 
    STATS_T_TEST_ONE: A one-sample t-test
    STATS_T_TEST_PAIRED: A two-sample, paired t-test (also known as a crossed t-test)
    STATS_T_TEST_INDEP: A t-test of two independent groups with the same variance (pooled variances)
    STATS_T_TEST_INDEPU: A t-test of two independent groups with unequal variance (unpooled variances)

  • How to use user defined exception class

    Hi all
    I just need som help with creating a user defined exception class.
    Im writing a small/simple text editor.
    My exception class looks like this:
    public class myExcp extends Throwable
         private String message;
         public myExcep(String message)
              this.message = message;
         public void display()
              System.out.println(message);
    I would like to use it when a user tries to open a exe-file instead of a txt file.
    Here is some code from the editor:
    if (e.getSource() == open)
    saveOld();
    if (fc.showOpenDialog(null)== JFileChooser.APPROVE_OPTION)
    readFile(fc.getSelectedFile().getAbsolutePath());           
    saveas.setEnabled(true);                
    So, should I use exception here or at the readFile method?
    readfile:
    private void readFile(String fileName)
    try
    String tmp = fileName.substring(fileName.length() -4, fileName.length());
    if (!tmp.equals(".exe"))
    FileReader r = new FileReader(fileName);
    textarea.read(r, null);
    r.close();
    currentFile = fileName;
    label.setText(currentFile);
    changed = false;
    catch (IOException e)
    JOptionPane.showMessageDialog (this, "Cannot find the file " + fileName);
    Where and how do I use my exception class.
    Do I need to create an instance? Where?
    Should the exception class extend Exception instead?
    Thank you in advance /

    Extend Exception, not Throwable. It's a checked exception that way.
    Follow the Sun coding standards and make that exception class name start with a capital letter.
    When you extend Exception, override all four ctors.
    What's that display method you added? Isn't getMessage() good enough?
    You need to create a new instance just before you throw the exception, of course.
    Sounds like a terrible design, by the way. Exceptions shouldn't be used like "go to" for app logic. They should signal unrecoverable conditions. You can easily recover from the situation you've described simply by displaying a pop-up that tells the user to open only text-readable file types. I think that's a better solution.
    %

  • "Nested and User Defined Exceptions" in Java...Theory and Code Required...?

    Can anyone provide theoretical information with example code for "Nested Exceptions" and "User Defined Exceptions"..? Or it would be equally good, if someone can provide links for further reading on the said topic.

    User Defined Exceptions are the same as exceptions in the JDK, but are defined by a "User"
    I suggest you look at the JDK for examples.
    A Nested Exception is an Exception with a different exception set as the cause.
    This pages covers more than you need to know with examples. [http://java.sun.com/javase/6/docs/api/java/lang/Throwable.html]

  • Propagating user defined exceptions

    A question on marshalling user defined exception in RMI/IIOP. Consider the following simple Java interface and user defined exception:
    public interface OrderProcess extends Remote {
    String placeOrder(PO order) throws OrderException, RemoteException;
    public final class OrderException extends java.lang.Exception implements java.io.Serializable {
    public OrderException() { }
    public String msg;
    public OrderException(String _msg) {
    msg = _msg;
    If the client uses RMI/IIOP to access a CORBA server( client uses the rmi stubs generated by rmic -iiop, the server uses Dynamic Skeleton Invocation by implementing org.omg.CORBA.DynamicImplementation), how does the server send back the user defined exception OrderException so that it can be unmarshalled properly by the client stub? Here is a section of the rmi stub generated by JDK1.3.0, note it looks for an exception OrderEx and OrderException:
    public String placeOrder(PO arg0) throws OrderException, RemoteException {
    if (!Util.isLocal(this)) {
    try {
    org.omg.CORBA_2_3.portable.InputStream in = null;
    try {
    org.omg.CORBA_2_3.portable.OutputStream out =
    (org.omg.CORBA_2_3.portable.OutputStream)
    _request("placeOrder", true);
    out.write_value(arg0,PO.class);
    in = (org.omg.CORBA_2_3.portable.InputStream)_invoke(out);
    return (String) in.read_value(String.class);
    } catch (ApplicationException ex) {
    in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
    String id = in.read_string();
    if (id.equals("IDL:RFQSample/initial/rfqTypes/OrderEx:1.0")) {
    throw (OrderException) in.read_value(OrderException.class);
    throw new UnexpectedException(id);
    } catch (RemarshalException ex) {
    return placeOrder(arg0);
    } finally {
    _releaseReply(in);
    } catch (SystemException ex) {
    throw Util.mapSystemException(ex);
    } else {
    ServantObject so = servantpreinvoke("placeOrder",OrderProcess.class);
    if (so == null) {
    return placeOrder(arg0);
    try {
    PO arg0Copy = (PO) Util.copyObject(arg0,_orb());
    return ((OrderProcess)so.servant).placeOrder(arg0Copy);
    } catch (Throwable ex) {
    Throwable exCopy = (Throwable)Util.copyObject(ex,_orb());
    if (exCopy instanceof OrderException) {
    throw (OrderException)exCopy;
    throw Util.wrapException(exCopy);
    } finally {
    servantpostinvoke(so);

    Not sure exactly if that's what you are asking but the unmarshalling of your OrderException happens in this catch block:
    catch (ApplicationException ex)
                        in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream ();
                        String id = in.read_string ();
                        if (id.equals ("IDL:RFQSample/initial/rfqTypes/OrderEx:1.0"))
                            throw (OrderException) in.read_value (OrderException.class);
                        throw new UnexpectedException (id);
                    }the ApplicationException class is the vehicle that transports your exception instance across the wire. You can dig further into the implementation to see how it is done.
    Vlad.

  • How to handle user defined exception from C#?

    Hi:
    I have some PL/SQL code that will throw a user defined exception if certain conditions are met. How do I handle user defined exceptions if this procedure/function is being called from C#? C# can handle a normal Oracle SQL error (e.g. ORA-XXXX) because they are defined in the proper class, but how do I get it to know about my user defined exception? Does anyone have any links to examples of doing this?
    Thanks.

    Hi Gaff,
    Is there a particular problem you're having doing this? It works as normal for me...
    Cheers
    Greg
    PLSQL
    =========
    create or replace procedure throwsomething as
    begin
    raise_application_error(-20001,'kaboom');
    end;
    ODP
    =====
        class Program
            static void Main(string[] args)
                using (OracleConnection con = new OracleConnection())
                    con.ConnectionString = "user id=scott;password=tiger;data source=orcl";
                    con.Open();
                    using (OracleCommand cmd = new OracleCommand())
                        cmd.CommandText = "begin throwsomething;end;";
                        cmd.Connection = con;
                        try
                            cmd.ExecuteNonQuery();
                        catch (OracleException oe)
                            Console.WriteLine("caught " + oe.Message);
    OUTPUT
    ========
    caught ORA-20001: kaboom
    ORA-06512: at "SCOTT.THROWSOMETHING", line 3
    ORA-06512: at line 1

  • How to catch the user defined  exception in application service

    Hi All,
    How to catch the user defined  exception in application service  when it is throwed by the external service..
    Regards,
    Thirumurugan.

    Hi,
        Thanks for your reply,
            Actually I  am calling validate Login method of External service from the application service. When the login fails, my external service will throw user defined Exception.I want to catch the user defined Exception.
        But in the application service , validate Login method can catch  only Invocation Exception and Engine Exception.
       These two exception are present in the Application service remote interface.
      public com.sap.comptest.extsrv.accrjavawsvi__document.output.
    Ns1_validateLoginResponse validateLogin(com.sap.comptest.extsrv.accrjavawsvi__document.input.Ns1_validateLogin input) throws com.sap.caf.mp.base.exception.InvocationException, com.sap.caf.mp.base.exception.EngineException;
    User defined exception is not present there. When i include the webservice as external service in CAF, it suppossed to generate the java file for the custom exception of validate Login method and this generated file should be included in the application service remote interface..
    public com.sap.comptest.extsrv.accrjavawsvi__document.output.
    Ns1_validateLoginResponse validateLogin(com.sap.comptest.extsrv.accrjavawsvi__document.input.Ns1_validateLogin input) throws com.sap.caf.mp.base.exception.InvocationException, com.sap.caf.mp.base.exception.EngineException,
    (generated file name of user defined Excpetion.
      Then only  validate login method  of application service can catch  the user defined Exception which is thrown by the  external service.
    regards,
    Thirumurugan.p

  • Problem regd USER DEFINED Exception heirarchy

    I have a strange class heirarchy regarding 'User defined exceptions'.
    This the heirarchy being used:<p>
    public class ExCalcFail extends SysException {<p>
         public ExCalcFail(UserConnection uc) {<p>
         super(uc);<p>
    }<p>
    }<p>
    public class SysException extends AutoDBObjectBase {<p>
    public SysException(UserConnection uc) {<p>
    super(uc);<p>
    }<p>
    <p>
    -- WHERE UserConnection is an INTERFACE.
    <p>
    Now my question is:
    <p>
    How can class ExCalFail's constructor call super(uc)?
    If this is the case,when is SysException's constructor called?
    <p>
    As class SysException has no default constructor how is the call
    super(uc) executed in ExCalcFail?
    <p>
    Shouldnt this give an error?

    How long have you been here? I'm surprised you still don't know about code tags.
    You can simply call super(uc) because that's the constructor the superclass - namely SysException - declares. And it's executed when it's called - at the beginning of ExCalcFail's c'tor. Where else?
    Why should it produce an error? It's perfectly valid and common code.

  • User defined exception problem in session bean.

    Hi,
    I creaed one user defined exception and using this exception
    in the session bean when I am trying use this bean at the client
    side and cathing this exception it is not catching it properly
    while server side it is throwing this exception.
    I can elaborate it through client code -
    try {
    isModified = sessionBean1.modifyNe(Object product);
    catch (ValidationException nve) {
    throw nve;
    catch (RemoteException remoteException) {
    remoteException.printStackTrace();
    server is throwing ValidationException but it is cathing in
    the RemoteException.
    stack trace is given below
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.RemoteException: com.ss.sms.common.exception.ValidationException: name should be unique
    at com.sisl.snms.server.esc.common.SmsEscBean.checkDuplicateNeName(SnmsEscBean.java:56)
    at com.sisl.snms.server.esc.escatm.SessionBean1.modifyNe(EscAtmBean.java:219)
    at com.pramati.ejb.runtime.EscAtmBean_LocalObject_Impl_785398532._pramati_impl_modifyNe(EscAtmBean_LocalObject_Impl_785398532.java:285)
    at com.pramati.ejb.runtime.EscAtmBean_LocalObject_Impl_785398532$3.run(EscAtmBean_LocalObject_Impl_785398532.java:238)
    at com.pramati.security.util.JAASSecurityHelper.doAs(JAASSecurityHelper.java:158)
    at com.pramati.security.util.JAASSecurityHelper.doAs(JAASSecurityHelper.java:266)
    at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)

    hi vikassahu
    try it : remove remoteException catching. and try it with normal Exception, and make sure that Exception should be in remote interface.
    and make sure that you are throwing your user Defined Excepion
    ok i think this will help u
    ok

  • User Defined Exceptions during Runtime...

    hi!
    Is it possible to throw user defined Exceptions during runtime?
    Thanx

    -Kayaman- should you rather extend exception or runtimeexception? In the exceptions that ive made i've always extended exception. Is there a difference?
    some thing like this
    public class UserException extends Exception {
         public UserException() {
              super();
          * @param arg0
         public UserException(String arg0) {
              super(arg0);
          * @param arg0
         public UserException(Throwable arg0) {
              super(arg0);
          * @param arg0
          * @param arg1
         public UserException(String arg0, Throwable arg1) {
              super(arg0, arg1);
    }

  • Validation returns : no data found + unhandled user-defined exception

    Hi, I'm working with Application Express 4.1.1.00.23.
    I have an application for timesheet management.
    On one page, I've got a report (not interactive) in which you can enter the hours you've worked. First you add a free line, choose the task and then enter the hours you've spent.
    You can only have one empty line at a time. If you try to add a line when you already have an empty line, a validation will display an error. It worked fine in version 3.2. Now we upgraded to 4.1 and get a weird error :
    1) The validation msg appears fine
    2) The report appears fine
    3) There is a msg at the end of the report saying :
    report error:
    ORA-01403: no data found
    ORA-06510: PL/SQL: unhandled user-defined exception
    Could somebody point out the source of this problem ?
    Thank you!
    Here is the debug :
    0.31117     0.00204     parse query as: FEUILLES_DE_TEMPS     4     
    0.31319     0.07865     ...Execute Statement: select NULL "CHECK$01", NULL "nom_projet2", NULL "NO_TACHE_ENTRE", NULL "NO_TACHE", NULL "NO_SEMAINE_EMPLOYE", NULL "NOM_TACHE", NULL "Tâches", NULL "SEQUENCE", NULL "Heures dim", NULL "DIM", NULL "Heures lun", NULL "LUN", NULL "Heures mar", NULL "MAR", NULL "Heures mer", NULL "MER", NULL "Heures jeu", NULL "JEU", NULL "Heures ven", NULL "VEN", NULL "Heures sam", .........
    0.39191     0.00158     print column headings     4
    0.39342     0.02546     rows loop: 500 row(s)     4
    0.41889     0.00087     report error: ORA-01403: no data found ORA-06510: PL/SQL: unhandled user-defined exception
    .....

    Hi, thanks for your answer. Here is the validation we are executing. I'm pretty sure its fine since count(*) always return a value (plus we see V2 in the debug...) :
    declare
    l_count number;
    begin
    apex_debug_message.enable_debug_messages(7);
    apex_debug_message.log_message('-----------------------------------V1----------------------------------');
    -- get remaining empty tasks count
    SELECT count(*) into l_count
    FROM VIEW_TACHE_SYSTEME
    WHERE NO_TACHE NOT IN (SELECT DISTINCT NO_TACHE FROM TACHE_JOUR WHERE NO_SEMAINE_EMPLOYE = :P36_NO_SEMAINE_EMPLOYE);
    apex_debug_message.log_message('-----------------------------------V2----------------------------------');
    apex_debug_message.log_message(l_count);
    if l_count = 0 then
    return 'Veuillez utiliser la tâche vide avant d''ajouter une ligne.';
    else
    return null;
    end if;
    end;
    Here is the debug :
    0.14643     0.00318     ...Validation "ADD_ROW_VALIDATION" - Type: FUNC_BODY_RETURNING_ERR_TEXT     4     
    0.14961     0.00318     ...Execute Statement: declare function x return varchar2 is begin declare l_count number; begin apex_debug_message.enable_debug_messages(7); apex_debug_message.log_message('-----------------------------------V1----------------------------------'); -- get remaining empty tasks count SELECT count(*) into l_count FROM VIEW_TACHE_SYSTEME WHERE NO_TACHE NOT IN (SELECT DISTINCT NO_TACHE FROM TACHE_JOUR WHERE NO_SEMAINE_EMPLOYE = :P36_NO_SEMAINE_EMPLOYE); apex_debug_message.log_message('-----------------------------------V2----------------------------------'); apex_debug_message.log_message(l_count); if l_count = 0 then return 'Veuillez utiliser la tâche vide avant d''ajouter une ligne.'; else return null; end if; end; return null; end; begin wwv_flow.g_computation_result_vc := x; end;     4     
    0.15280     0.01299     -----------------------------------V1----------------------------------     6     
    0.16578     0.00310     -----------------------------------V2----------------------------------     6     
    0.16888     0.00235     0     6     
    0.17123     0.00225     ......Result = Veuillez utiliser la tâche vide avant d'ajouter une ligne.     4     
    0.17347     0.00276     ......Did NOT pass     4     
    0.17624     0.00314     Add error onto error stack     4     
    0.17938     0.00343     ...Error data:     4     
    0.18280     0.00327     ......message: Veuillez utiliser la tâche vide avant d'ajouter une ligne.     4     
    0.18607     0.00446     ......display_location: INLINE_IN_NOTIFICATION     4     
    0.19053     0.00323     ......is_internal_error: false     4     
    0.19375     0.00323     ......error_backtrace: - PL/SQL Call Stack - object line object handle number name c000000382130f30 717 package body APEX_040100.WWV_FLOW_ERROR c000000382130f30 833 package body APEX_040100.WWV_FLOW_ERROR c00000039da9b5c8 154 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 363 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 784 package body APEX_040100.WWV_FLOW_VALIDATION c00000039da9b5c8 905 package body APEX_040100.WWV_FLOW_VALIDATION c00000039d1142c8 10005 package body APEX_040100.WWV_FLOW c000000381287050 31 anonymous block

  • How can we handle user defined exceptions in ejbStore() of entity bean

    Accroding to my knowledge in ejbStore we can not handle user defined exceptions. Can anybody help on this????

    In my case I am calling a method from ejbsotre() . In that method i wanted to put some checks according to that i wanted to throw exceptions.
    In this case how would I handle exceptions.
    Can you suggest in this case,please !!!

  • Handle user defined exception in stored procedure

    Dear all,
    I'm using JDev 11.1.1.4.0
    In my application I'm calling the stored procedure with only in parameters using the Example 37-9 http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcadvgen.htm#ADFFD1056
    In my stored procedure I have user defined exception, like:
    create or replace procedure ...
    AS
    e_otwarty     EXCEPTION;
    //some code
      EXCEPTION
        WHEN e_otwarty THEN
          dbms_output.put_line('Masz juz otwarty raport');
          // or what should I do here ??
    END;I want to display the message in the popup window in my ADF application. How can I do that ?
    Regards,
    Wojtek.

    raise_application_error(-20001, 'error message');
    Scott

  • IE only: wwsec_app_priv.process_signon (User-Defined Exception) (WWC-41417)

    I am using Portal 3.0.6 in Sun SunOS 5.8. The site will be running in https mode. As everybody knows, 443 is the default port number for ssl mode. I setup the httpd.conf to 443. No problem. I ran ssodatan to relate Login Server to Portal - I had to specify 443 at the end of URL in ssodatan syntax. Otherwise, I got "Error:You cannot login because there is no configuration information stored in the enabler configuration table. (WWC-41439)" both in Netscape navigator and MS Internet Explorer.
    I now am able to log in Portal site. But, the problem happens just after loggin in. With Navigator I don't get any problems. But, IE gives me "Error: Unexpected error encountered in wwsec_app_priv.process_signon (User-Defined Exception) (WWC-41417)". I guess this happens because of how IE works with https. It takes 443 off from URL in https mode. The portal is unable to match the url and what it has in wwsec_enabler_config_info$ which has 443. When I tested with 444 as port number. It worked! Putting a port number in URL will be cumbersome. That's why I am trying with 443.
    I tried also with ssodatax to add an additional entry for without 443 as specified in a document "Oracle9ias Portal configuration options" page 30. Ssodatax has a bug so it updates existing entry, too. I had to update it back to its original value. It's fine. But, this time another error comes up. "WWC-00000". I don't see any solution for this.
    null

    When a new user is logging on for the first time, the portal adds them to the AUTHENTICATED_USERS group under the portal's group container. In your case, for some users, this is apparently running into some problem.
    To debug this, try turning on additional logging on the OID server and attempt logging in as these users, and see what is reported.
    You should enable the following debug flags:
    Search Filter Processing
    Access Control List Processing
    Status Log Connections/Operations/Results

  • "user defined exception" in a stored procedure and APEX

    I would like to use user defined exception in a stored procedure or trigger in a APEX application.
    Does anybody know how to do it ? or know where can I find a good reference ?
    Thanks,

    raise_application_error(-20001, 'error message');
    Scott

Maybe you are looking for

  • G4 quicksilver and tiger video choppy

    I inherited a G4 quicksilver 867 mhz. I added ram to bing it up to 512mb. Also went from OS X 10.2.8 to Tiger (10.4.10). Heres my problem. Before I upgraded it I could pull video from a dv camera and edit it with imovie. Video was very smooth. Now af

  • X11 problem

    I am having this error when trying to install Oracle 10 on Fedora Core. I googled all over the net but no fix. I worked on DISPLAY settings, changed hostname to ip I did everything that I could do but nothing helped. It is driving me krazy. I just wa

  • 10gR2 RAC on Solaris 10

    Hi, I am looking for "step by step install & configure" guide to setup 10gr2 RAC on Solaris 10. I got the following Doc "ID: Note:317257.1" from metalink. Looks like I need to configure Solaris 10 containers and Solaris Zones for 10g RAC. Is there an

  • The EXPORT IS GREEN FULL HD

    hello I have a pobrema have a imac 21 with 8 gb of ram and hd 500 , use another external hd 2 tb and a 1 tb , to store the videos , not leave anything on the pc hd , my imac wheel with yosemite . FINISH WHEN THE EXPORT OF FINAL CUT VIDEO IS ALL GREEN

  • Can't find serial number for iTunes

    Can't find serial number for iTunes! I need it and I can't find it... Where do you find it in the new updated versions?? Help! Thanks