KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > j2ee > blueprints > opc > webservicebroker > provider > BrokerServiceBean


1 /*
2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistribution in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * Neither the name of Sun Microsystems, Inc. or the names of
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * This software is provided "AS IS," without a warranty of any
21 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
22 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
24 * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
25 * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
26 * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
27 * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
28 * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
29 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
30 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
31 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * You acknowledge that Software is not designed, licensed or intended
34 * for use in the design, construction, operation or maintenance of
35 * any nuclear facility.
36 */

37
38 package com.sun.j2ee.blueprints.opc.webservicebroker.provider;
39
40 import java.rmi.*;
41
42 import javax.ejb.*;
43
44 import com.sun.j2ee.blueprints.servicelocator.*;
45 import com.sun.j2ee.blueprints.servicelocator.ejb.*;
46 import com.sun.j2ee.blueprints.opc.JNDINames;
47 import com.sun.j2ee.blueprints.opc.utils.*;
48 import com.sun.j2ee.blueprints.opc.serviceexceptions.*;
49
50 import java.io.*;
51 import org.w3c.dom.*;
52 import org.xml.sax.*;
53 import javax.xml.parsers.*;
54 import javax.xml.transform.*;
55 import javax.xml.transform.dom.*;
56
57 public class BrokerServiceBean implements SessionBean {
58
59     private SessionContext sc;
60     private BrokerTransformer bt = null;
61  
62     public BrokerServiceBean(){}
63     
64     public void ejbCreate() throws CreateException {
65         bt = new BrokerTransformer();
66     }
67
68     public String JavaDoc submitDocument(String JavaDoc doc) throws InvalidDocumentException,
69                                                     ProcessingException {
70   // Step 1. Validate Doc
71

72         boolean valid = validate(doc);
73         
74         if (!valid) {
75             throw new ProcessingException("BrokerServiceBean: document does not match schema" + doc);
76         }
77         // transform the doc
78
String JavaDoc tDoc = bt.transform(new InputSource(new StringReader(doc)));
79         if (tDoc != null) {
80             doc = tDoc;
81         }
82   // Step 3. Map doc to domain obj
83
// In this implementation, the Work Flow Manager expects the doc as it
84
// is; no mapping required
85

86   // Step 4. Find which Q to put the doc;
87
// In this implementation, the work flow
88
// manager Q is the target for all messages;
89

90   // Step 5. Delegate the request to processing layer by sending it
91
// on to the Q
92
if(delegateToProcessingLayer(JNDINames.WORKFLOW_MGR_MDB_QUEUE, doc)
93                                                              == false)
94       throw new ProcessingException("Irrecoverable error while submitting requestfor processing");
95
96   // Step 6. Send back a corrleation ID - sending a dummy value here
97
return("INV1234");
98     }
99
100     private boolean delegateToProcessingLayer(String JavaDoc destQueue, String JavaDoc xmlDoc)
101                                               throws ProcessingException {
102   return(JMSUtils.sendMessage(destQueue, JNDINames.DOC_TYPE,
103             JNDINames.INVOICE_DOCUMENT, xmlDoc));
104     }
105
106     public void setSessionContext(SessionContext sc) {
107         this.sc = sc;
108     }
109     
110     public void ejbRemove() throws RemoteException {
111         bt = null;
112     }
113     
114     //empty for Stateless EJBs
115
public void ejbActivate() {}
116
117     //empty for Stateless EJBs
118
public void ejbPassivate() {}
119     
120     public boolean validate(String JavaDoc xmlText) {
121         Document doc = null;
122         try {
123             DocumentBuilderFactory dbf = null;
124             DocumentBuilder db = null;
125             try {
126                 dbf = DocumentBuilderFactory.newInstance();
127                 dbf.setValidating(true);
128                 dbf.setNamespaceAware(true);
129                 dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
130                                             "http://www.w3.org/2001/XMLSchema");
131                 if (dbf != null){
132                     db = dbf.newDocumentBuilder();
133                  }
134                  db.setEntityResolver(new BrokerEntityResolver());
135                  db.setErrorHandler(new BrokerXMLMessageErrorHandler());
136             } catch ( javax.xml.parsers.ParserConfigurationException JavaDoc pce) {
137                 System.err.println(pce);
138             }
139           InputSource is = new InputSource(new StringReader(xmlText));
140             doc = db.parse(is);
141             return true;
142         } catch (Exception JavaDoc e) {
143             System.err.println("BrokerServiceBean::getDocument error loading XML Document " + e);
144         }
145         return false;
146     }
147 }
148
Popular Tags