Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Microsoft Exchange Webservice Libraries imported in Oracle database

malikadeelJan 18 2020 — edited Jan 20 2020

I have created a java package to Consume `ews/Exchange.asmx` in Jdeveloper 12c. Below is code which working absolutely Fine using Main Method inside jdeveloper.

    public class Ews {

 

     

        public static String readmailbody(String custno,String user,String pwd,String domain) {

                try {

                Connection conn = DriverManager.getConnection("jdbc:default:connection:");

                ExchangeService service = new ExchangeService();

                ExchangeCredentials credentials = new WebCredentials(user, pwd, domain);

                service.setCredentials(credentials);

                service.setUrl(new URI("https://host.domain.com/ews/Exchange.asmx"));

                ItemView view = new ItemView(1);

 

                view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending);

                view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject,ItemSchema.DateTimeReceived));

 

                FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox,new SearchFilter.SearchFilterCollection(LogicalOperator.Or,new SearchFilter.ContainsSubstring(ItemSchema.Subject,custno)),view);

 

                String senderEmail = "";

                String mailto = "";

 

                for (Item item : findResults.getItems()) {

                    item.load();

 

                    if (item instanceof EmailMessage) {

                        senderEmail = "From : " + ((EmailMessage) item).getSender().getAddress();

                        mailto = "To : " + ((EmailMessage) item).getReceivedBy().getAddress();

                    }

 

                    String mailcc = "Cc : " + item.getDisplayCc();

                    String subject = "Subject : " + item.getSubject();

                    String body =

                        senderEmail + "<br>" + mailto + "<br>" + mailcc + "<br>" + subject +

                        MessageBody.getStringFromMessageBody(item.getBody());

 

                    String proc = "call xx_ews_exchange(?,?,?,?,?,?)";

 

                    CallableStatement pstmt = conn.prepareCall(proc);

                    pstmt.setString(1, senderEmail);

                    pstmt.setString(2, mailto);

                    pstmt.setString(3, mailcc);

                    pstmt.setString(4, subject);

                    pstmt.setString(5, body);

                    pstmt.setString(6, custno);

                    pstmt.executeUpdate();

                    pstmt.close();

                 

                    return "Success";

 

                }

            } catch (SQLException sqle) {

                return "SQLException " + convertException (sqle);

            } catch (ServiceLocalException sle) {

                return "ServiceLocalException " + convertException (sle);         

            } catch (URISyntaxException urise) {

                return "URISyntaxException " + convertException (urise);

            } catch (Exception e) {

                return "Other Exception " +  convertException (e);

                }

           return  ""     ;

        }

     

        public static String convertException (Throwable p_stack) {

            StringWriter sw = new StringWriter();

            p_stack.printStackTrace(new PrintWriter(sw));

            String exceptionAsString = sw.toString();

            return exceptionAsString;

        }

         

 

    }

However on the other Hand I want to import this method in Oracle Database 12.2 with java version as below

    java version "1.8.0_91"

    Java(TM) SE Runtime Environment (build 1.8.0_91-b14)

    Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

I have imported all depended libraries into Oracle database using below Command

    loadjava -u user/pass -r -v -f -genmissing commons-lang3-3.9.jar commons-logging-1.2.jar ews-java-api-2.0.jar httpcore-4.4.12.jar joda-time-2.3.jar commons-codec-1.10.jar httpclient-4.4.1.jar

In Last I have import Ews.java into Oracel database

    loadjava -u user/pass -v -r -t Ews.java

Then Created A Function to Call Java Method `readmailbody`

    CREATE OR REPLACE FUNCTION readmailbody (custno VARCHAR2,p_user VARCHAR2,p_pwd VARCHAR2,P_domain VARCHAR2) RETURN VARCHAR2

    AS LANGUAGE JAVA

    NAME 'company.ews.exchange.Ews.readmailbody(java.lang.String ,java.lang.String ,java.lang.String ,java.lang.String ) return java.lang.String';

and Finally Called Above Function as below

    declare

    a VARCHAR2(4000);

    BEGIN

    select readmailbody ('Search String','User','Pass','domain') INTO a FROM DUAL;

    DBMS_OUTPUT.PUT_LINE (a);

    END;

Once function called it return below Error

    Other Exception microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. The request failed. null

    at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:74)

    at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:158)

    at microsoft.exchange.webservices.data.core.ExchangeService.findItems(ExchangeService.java:985)

    at microsoft.exchange.webservices.data.core.ExchangeService.findItems(ExchangeService.java:1028)

    at microsoft.exchange.webservices.data.core.ExchangeService.findItems(ExchangeService.java:1088)

    at mtbc.ews.exchange.Ews.readmailbody(Ews:63)

    Caused by: microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. null

    at microsoft.exchange.webservices.data.core.request.ServiceRequestBase.getEwsHttpWebResponse(ServiceRequestBase.java:729)

    at microsoft.exchange.webservices.data.core.request.ServiceRequestBase.validateAndEmitRequest(ServiceRequestBase.java:639)

    at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:62)

    ... 5 more

    Caused by: org.apache.http.client.ClientProtocolException

    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)

    at microsoft.exchange.webservices.data.core.request.HttpClientWebRequest.executeRequest(HttpClientWebRequest.java:292)

    at microsoft.exchange.webservices.data.core.request.ServiceRequestBase.getEwsHttpWebResponse(ServiceRequestBase.java:720)

    ... 7 more

    Caused by: org.apache.http.ProtocolException: Invalid header: or

    at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:230)

    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:266)

    at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)

    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)

    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)

    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)

    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)

    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)

    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)

    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)

    ... 10 more

Comments
Post Details
Added on Jan 18 2020
3 comments
554 views