OK - tried via a stored procedure. This time I'm getting a similar
Oracle exception:
ORA-00932: inconsistent datatypes: expected Invalid Java signature
Any suggestions/help would be greatly appreciated. The complete
code is provided below:

a) Stored Oracle Type...

CREATE OR REPLACE TYPE StringArrayType AS TABLE OF VARCHAR2(100)
/

b) Stored Java class...

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "JavaArrayWrapper" AS

import oracle.jdbc.driver.*;
import oracle.sql.*;
import java.sql.*;

public class MyJavaArray {

public static void setArray() {
String s[] = new String[10];

for (int i=0; i<s.length; i++) {
s[i] = "Entry " + (i+1) ;
}

try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = myOpenConnectionClass();
OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall("{call MyTestWrapper(?)}");
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRINGARRAYTYPE" , conn);
ARRAY a = new ARRAY(desc, conn, s);
cs.setARRAY(1,a);
cs.execute();
cs.close();
conn.close();
}
catch (SQLException sql) {
}
}
}
/

c) Stored PL/SQL wrapper procedure...

CREATE OR REPLACE PROCEDURE MyTestWrapper(vArray OUT StringArrayType) IS
LANGUAGE JAVA NAME 'MyJavaArray.setArray()';
/

d) A pl/sql implementation block...

SET SERVEROUTPUT ON
DECLARE
vArray StringArrayType;
BEGIN
MyTestWrapper(vArray);
DBMS_OUTPUT.ENABLE(1000);
FOR i IN 1..vArray.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(vArray(i));
END LOOP;
END;
/
SET SERVEROUTPUT OFF