001: /* SharkEJBBean.java */
002: package org.enhydra.shark.ejb;
003:
004: import java.rmi.RemoteException;
005:
006: import javax.ejb.EJBException;
007: import javax.ejb.EJBObject;
008: import javax.ejb.SessionBean;
009: import javax.ejb.SessionContext;
010: import javax.naming.Context;
011: import javax.rmi.PortableRemoteObject;
012:
013: import org.enhydra.shark.Shark;
014: import org.enhydra.shark.api.client.wfmc.wapi.WAPI;
015: import org.enhydra.shark.api.client.wfservice.AdminMisc;
016: import org.enhydra.shark.api.client.wfservice.AdminMiscExt;
017: import org.enhydra.shark.api.client.wfservice.ExecutionAdministration;
018: import org.enhydra.shark.api.client.wfservice.ExecutionAdministrationExt;
019: import org.enhydra.shark.api.client.wfservice.NameValue;
020: import org.enhydra.shark.api.client.wfservice.PackageAdministration;
021: import org.enhydra.shark.api.client.wfservice.SharkConnection;
022: import org.enhydra.shark.api.client.wfservice.SharkInterface;
023: import org.enhydra.shark.api.client.wfservice.XPDLBrowser;
024: import org.enhydra.shark.api.client.xpil.XPILHandler;
025: import org.enhydra.shark.api.common.ActivityFilterBuilder;
026: import org.enhydra.shark.api.common.AssignmentFilterBuilder;
027: import org.enhydra.shark.api.common.EventAuditFilterBuilder;
028: import org.enhydra.shark.api.common.ProcessFilterBuilder;
029: import org.enhydra.shark.api.common.ProcessMgrFilterBuilder;
030: import org.enhydra.shark.api.common.ResourceFilterBuilder;
031:
032: /**
033: * @ejb.bean
034: * name="SharkEJB"
035: * type="Stateless"
036: * display-name="Shark Wf RMI Service"
037: * jndi-name="org/enhydra/shark/ejb/SharkEJB"
038: * local-jndi-name="org/enhydra/shark/ejb/SharkEJBLocal"
039: * transaction-type="Container"
040: * view-type="both"
041: * local-business-interface="org.enhydra.shark.api.client.wfservice.SharkInterface"
042: *
043: * @ejb.ejb-ref ejb-name="SharkConnectionSS"
044: * view-type="both"
045: * ref-name="org/enhydra/shark/ejb/SharkConnectionSS"
046: * @ejb.ejb-ref ejb-name="WAPIEJB"
047: * view-type="both"
048: * ref-name="org/enhydra/shark/ejb/WAPIEJB"
049: * @ejb.ejb-ref ejb-name="PackageAdministrationEJB"
050: * view-type="both"
051: * ref-name="org/enhydra/shark/ejb/PackageAdministrationEJB"
052: * @ejb.ejb-ref ejb-name="ExecutionAdministrationEJB"
053: * view-type="both"
054: * ref-name="org/enhydra/shark/ejb/ExecutionAdministrationEJB"
055: * @ejb.ejb-ref ejb-name="ExecutionAdministrationExtEJB"
056: * view-type="both"
057: * ref-name="org/enhydra/shark/ejb/ExecutionAdministrationExtEJB"
058: * @ejb.ejb-ref ejb-name="AdminMiscEJB"
059: * view-type="both"
060: * ref-name="org/enhydra/shark/ejb/AdminMiscEJB"
061: * @ejb.ejb-ref ejb-name="AdminMiscExtEJB"
062: * view-type="both"
063: * ref-name="org/enhydra/shark/ejb/AdminMiscExtEJB"
064: * @ejb.ejb-ref ejb-name="XPDLBrowserEJB"
065: * view-type="both"
066: * ref-name="org/enhydra/shark/ejb/XPDLBrowserEJB"
067: * @ejb.ejb-ref ejb-name="ActivityFilterBuilderEJB"
068: * view-type="both"
069: * ref-name="org/enhydra/shark/ejb/ActivityFilterBuilderEJB"
070: * @ejb.ejb-ref ejb-name="AssignmentFilterBuilderEJB"
071: * view-type="both"
072: * ref-name="org/enhydra/shark/ejb/AssignmentFilterBuilderEJB"
073: * @ejb.ejb-ref ejb-name="EventAuditFilterBuilderEJB"
074: * view-type="both"
075: * ref-name="org/enhydra/shark/ejb/EventAuditFilterBuilderEJB"
076: * @ejb.ejb-ref ejb-name="ProcessFilterBuilderEJB"
077: * view-type="both"
078: * ref-name="org/enhydra/shark/ejb/ProcessFilterBuilderEJB"
079: * @ejb.ejb-ref ejb-name="ProcessMgrFilterBuilderEJB"
080: * view-type="both"
081: * ref-name="org/enhydra/shark/ejb/ProcessMgrFilterBuilderEJB"
082: * @ejb.ejb-ref ejb-name="ResourceFilterBuilderEJB"
083: * view-type="both"
084: * ref-name="org/enhydra/shark/ejb/ResourceFilterBuilderEJB"
085: * @ejb.ejb-ref ejb-name="XPILHandlerEJB"
086: * view-type="both"
087: * ref-name="org/enhydra/shark/ejb/XPILHandlerEJB"
088: * @ejb.ejb-ref ejb-name="ApplicationMappingMgrAdminEJB"
089: * view-type="both"
090: * ref-name="org/enhydra/shark/ejb/ApplicationMappingMgrAdminEJB"
091: * @ejb.ejb-ref ejb-name="ParticipantMappingMgrAdminEJB"
092: * view-type="both"
093: * ref-name="org/enhydra/shark/ejb/ParticipantMappingMgrAdminEJB"
094: * @ejb.ejb-ref ejb-name="UserGroupManagerAdminEJB"
095: * view-type="both"
096: * ref-name="org/enhydra/shark/ejb/UserGroupManagerAdminEJB"
097: *
098: * @ejb.interface
099: * extends="org.enhydra.shark.api.client.wfservice.SharkInterface,javax.ejb.EJBObject"
100: * generate="local,remote,service-endpoint"
101: * service-endpoint-class="org.enhydra.shark.ejb.SharkEJBEndpoint"
102: *
103: * @ejb:transaction
104: * type="Required"
105: *
106: * @jonas:bean
107: * ejb-name="SharkEJB"
108: * jndi-name="org/enhydra/shark/ejb/SharkEJB"
109: *
110: * @wsee.port-component
111: * name="SharkEJBEndpoint"
112: *
113: * @wsee.jaxrpc-mapping
114: * root-type-qname="SharkEJBEndpoint"
115: *
116: * The top-most client interface for accessing shark engine.
117: * Every client application has to know about the implementation
118: * of this interface.
119: * <p>
120: * When client application has the instance of this interface implementation,
121: * it can call one of its methods to retrieve instances of various interfaces
122: * used for managing Shark.
123: *
124: * @author Sasa Bojanic
125: * @author Vladimir Puskas
126: * @author T.Jovanovic
127: * @version 0.1
128: */
129: public abstract class SharkEJBBean implements SharkInterface,
130: SessionBean {
131:
132: private SessionContext context;
133:
134: /**
135: * @ejb:interface-method
136: * view-type="both"
137: * Returns instance of SharkConnection interface that can be
138: * used by shark user to connect to shark engine and execute assignments.
139: *
140: * @return SharkConnection instance.
141: */
142: public SharkConnection getSharkConnection() throws Exception {
143: //initShark();
144: SharkConnectionSS conn = null;
145: try {
146: Context initialContext = EJBJNDIContext.getInstance()
147: .getInitialContext();
148: SharkConnection wfshark = Shark.getInstance()
149: .getSharkConnection();
150: conn = ((org.enhydra.shark.ejb.SharkConnectionSSHome) PortableRemoteObject
151: .narrow(
152: initialContext
153: .lookup("org/enhydra/shark/ejb/SharkConnectionSS"),
154: org.enhydra.shark.ejb.SharkConnectionSSHome.class))
155: .create(wfshark);
156: return (SharkConnectionSS) conn.getPassedEJBObject();
157: } catch (Exception ex) {
158: throw new EJBException(ex);
159: }
160: }
161:
162: /**
163: * @ejb:interface-method
164: * view-type="both"
165: * Returns instance of WfMC API interface that can be
166: * used by shark user to connect to shark engine and execute assignments.
167: *
168: * @return a WAPI instance.
169: */
170: public WAPI getWAPIConnection() throws Exception {
171: //initShark();
172: WAPIEJB wapi = null;
173: try {
174: Context initialContext = EJBJNDIContext.getInstance()
175: .getInitialContext();
176: wapi = ((org.enhydra.shark.ejb.WAPIEJBHome) PortableRemoteObject
177: .narrow(initialContext
178: .lookup("org/enhydra/shark/ejb/WAPIEJB"),
179: org.enhydra.shark.ejb.WAPIEJBHome.class))
180: .create();
181: return (WAPIEJB) wapi.getPassedEJBObject();
182: } catch (Exception ex) {
183: throw new EJBException(ex);
184: }
185: }
186:
187: /**
188: * @ejb:interface-method
189: * view-type="both"
190: * Returns instance of interface for administering packages (XPDLs).
191: */
192: public PackageAdministration getPackageAdministration()
193: throws Exception {
194: //initShark();
195: PackageAdministrationEJB admin = null;
196: try {
197: Context initialContext = EJBJNDIContext.getInstance()
198: .getInitialContext();
199: admin = ((org.enhydra.shark.ejb.PackageAdministrationEJBHome) PortableRemoteObject
200: .narrow(
201: initialContext
202: .lookup("org/enhydra/shark/ejb/PackageAdministrationEJB"),
203: org.enhydra.shark.ejb.PackageAdministrationEJBHome.class))
204: .create();
205: return (PackageAdministrationEJB) admin
206: .getPassedEJBObject();
207: } catch (Exception ex) {
208: throw new EJBException(ex);
209: }
210: }
211:
212: /**
213: * @ejb:interface-method
214: * view-type="both"
215: * Returns instance of interface for execution objects administering.
216: */
217:
218: public ExecutionAdministration getExecutionAdministration()
219: throws Exception {
220: //initShark();
221: ExecutionAdministrationEJB admin = null;
222: ;
223: try {
224: Context initialContext = EJBJNDIContext.getInstance()
225: .getInitialContext();
226: admin = ((org.enhydra.shark.ejb.ExecutionAdministrationEJBHome) PortableRemoteObject
227: .narrow(
228: initialContext
229: .lookup("org/enhydra/shark/ejb/ExecutionAdministrationEJB"),
230: org.enhydra.shark.ejb.ExecutionAdministrationEJBHome.class))
231: .create();
232: return (ExecutionAdministrationEJB) admin
233: .getPassedEJBObject();
234: } catch (Exception ex) {
235: throw new EJBException(ex);
236: }
237: }
238:
239: /**
240: * @ejb:interface-method
241: * view-type="both"
242: * Returns instance of extension interface for execution objects administering.
243: */
244: public ExecutionAdministrationExt getExecutionAdministrationExtension()
245: throws Exception {
246: //initShark();
247: ExecutionAdministrationExtEJB admin = null;
248: ;
249: try {
250: Context initialContext = EJBJNDIContext.getInstance()
251: .getInitialContext();
252: admin = ((org.enhydra.shark.ejb.ExecutionAdministrationExtEJBHome) PortableRemoteObject
253: .narrow(
254: initialContext
255: .lookup("org/enhydra/shark/ejb/ExecutionAdministrationExtEJB"),
256: org.enhydra.shark.ejb.ExecutionAdministrationExtEJBHome.class))
257: .create();
258: return (ExecutionAdministrationExtEJB) admin
259: .getPassedEJBObject();
260: } catch (Exception ex) {
261: throw new EJBException(ex);
262: }
263: }
264:
265: /**
266: * @ejb:interface-method
267: * view-type="both"
268: * Returns instance of interface for Miscellaneous administering.
269: */
270: public AdminMisc getAdminMisc() throws Exception {
271: //initShark();
272: AdminMiscEJB admin = null;
273: ;
274: try {
275: Context initialContext = EJBJNDIContext.getInstance()
276: .getInitialContext();
277: admin = ((org.enhydra.shark.ejb.AdminMiscEJBHome) PortableRemoteObject
278: .narrow(
279: initialContext
280: .lookup("org/enhydra/shark/ejb/AdminMiscEJB"),
281: org.enhydra.shark.ejb.AdminMiscEJBHome.class))
282: .create();
283: return (AdminMiscEJB) admin.getPassedEJBObject();
284: } catch (Exception ex) {
285: throw new EJBException(ex);
286: }
287: }
288:
289: /**
290: * @ejb:interface-method
291: * view-type="both"
292: * Returns instance of extension interface for Miscellaneous administering.
293: */
294: public AdminMiscExt getAdminMiscExtension() throws Exception {
295: //initShark();
296: AdminMiscExtEJB admin = null;
297: ;
298: try {
299: Context initialContext = EJBJNDIContext.getInstance()
300: .getInitialContext();
301: admin = ((org.enhydra.shark.ejb.AdminMiscExtEJBHome) PortableRemoteObject
302: .narrow(
303: initialContext
304: .lookup("org/enhydra/shark/ejb/AdminMiscExtEJB"),
305: org.enhydra.shark.ejb.AdminMiscExtEJBHome.class))
306: .create();
307: return (AdminMiscExtEJB) admin.getPassedEJBObject();
308: } catch (Exception ex) {
309: throw new EJBException(ex);
310: }
311: }
312:
313: /**
314: * @ejb:interface-method
315: * view-type="both"
316: * Returns instance of interface for browsing XPDL.
317: */
318: public XPDLBrowser getXPDLBrowser() throws Exception {
319: //initShark();
320: XPDLBrowserEJB browser = null;
321: try {
322: Context initialContext = EJBJNDIContext.getInstance()
323: .getInitialContext();
324: browser = ((org.enhydra.shark.ejb.XPDLBrowserEJBHome) PortableRemoteObject
325: .narrow(
326: initialContext
327: .lookup("org/enhydra/shark/ejb/XPDLBrowserEJB"),
328: org.enhydra.shark.ejb.XPDLBrowserEJBHome.class))
329: .create();
330: return (XPDLBrowserEJB) browser.getPassedEJBObject();
331: } catch (Exception ex) {
332: throw new EJBException(ex);
333: }
334: }
335:
336: /**
337: * @ejb:interface-method
338: * view-type="both"
339: * Returns instance of interface for building filters for activity.
340: */
341: public ActivityFilterBuilder getActivityFilterBuilder()
342: throws Exception {
343: //initShark();
344: ActivityFilterBuilderEJB builder = null;
345: try {
346: Context initialContext = EJBJNDIContext.getInstance()
347: .getInitialContext();
348: builder = ((org.enhydra.shark.ejb.ActivityFilterBuilderEJBHome) PortableRemoteObject
349: .narrow(
350: initialContext
351: .lookup("org/enhydra/shark/ejb/ActivityFilterBuilderEJB"),
352: org.enhydra.shark.ejb.ActivityFilterBuilderEJBHome.class))
353: .create();
354: return (ActivityFilterBuilderEJB) builder
355: .getPassedEJBObject();
356: } catch (Exception ex) {
357: throw new EJBException(ex);
358: }
359: }
360:
361: /**
362: * @ejb:interface-method
363: * view-type="both"
364: * Returns instance of interface for building filters for assignment.
365: */
366: public AssignmentFilterBuilder getAssignmentFilterBuilder()
367: throws Exception {
368: //initShark();
369: AssignmentFilterBuilderEJB builder = null;
370: try {
371: Context initialContext = EJBJNDIContext.getInstance()
372: .getInitialContext();
373: builder = ((org.enhydra.shark.ejb.AssignmentFilterBuilderEJBHome) PortableRemoteObject
374: .narrow(
375: initialContext
376: .lookup("org/enhydra/shark/ejb/AssignmentFilterBuilderEJB"),
377: org.enhydra.shark.ejb.AssignmentFilterBuilderEJBHome.class))
378: .create();
379: return (AssignmentFilterBuilderEJB) builder
380: .getPassedEJBObject();
381: } catch (Exception ex) {
382: throw new EJBException(ex);
383: }
384: }
385:
386: /**
387: * @ejb:interface-method
388: * view-type="both"
389: * Returns instance of interface for building filters for event audit.
390: */
391: public EventAuditFilterBuilder getEventAuditFilterBuilder()
392: throws Exception {
393: //initShark();
394: EventAuditFilterBuilderEJB builder = null;
395: try {
396: Context initialContext = EJBJNDIContext.getInstance()
397: .getInitialContext();
398: builder = ((org.enhydra.shark.ejb.EventAuditFilterBuilderEJBHome) PortableRemoteObject
399: .narrow(
400: initialContext
401: .lookup("org/enhydra/shark/ejb/EventAuditFilterBuilderEJB"),
402: org.enhydra.shark.ejb.EventAuditFilterBuilderEJBHome.class))
403: .create();
404: return (EventAuditFilterBuilderEJB) builder
405: .getPassedEJBObject();
406: } catch (Exception ex) {
407: throw new EJBException(ex);
408: }
409: }
410:
411: /**
412: * @ejb:interface-method
413: * view-type="both"
414: * Returns instance of interface for building filters for process.
415: */
416: public ProcessFilterBuilder getProcessFilterBuilder()
417: throws Exception {
418: //initShark();
419: ProcessFilterBuilderEJB builder = null;
420: try {
421: Context initialContext = EJBJNDIContext.getInstance()
422: .getInitialContext();
423: builder = ((org.enhydra.shark.ejb.ProcessFilterBuilderEJBHome) PortableRemoteObject
424: .narrow(
425: initialContext
426: .lookup("org/enhydra/shark/ejb/ProcessFilterBuilderEJB"),
427: org.enhydra.shark.ejb.ProcessFilterBuilderEJBHome.class))
428: .create();
429: return (ProcessFilterBuilderEJB) builder
430: .getPassedEJBObject();
431: } catch (Exception ex) {
432: throw new EJBException(ex);
433: }
434: }
435:
436: /**
437: * @ejb:interface-method
438: * view-type="both"
439: * Returns instance of interface for building filters for process manager.
440: */
441: public ProcessMgrFilterBuilder getProcessMgrFilterBuilder()
442: throws Exception {
443: //initShark();
444: ProcessMgrFilterBuilderEJB builder = null;
445: try {
446: Context initialContext = EJBJNDIContext.getInstance()
447: .getInitialContext();
448: builder = ((org.enhydra.shark.ejb.ProcessMgrFilterBuilderEJBHome) PortableRemoteObject
449: .narrow(
450: initialContext
451: .lookup("org/enhydra/shark/ejb/ProcessMgrFilterBuilderEJB"),
452: org.enhydra.shark.ejb.ProcessMgrFilterBuilderEJBHome.class))
453: .create();
454: return (ProcessMgrFilterBuilderEJB) builder
455: .getPassedEJBObject();
456: } catch (Exception ex) {
457: throw new EJBException(ex);
458: }
459: }
460:
461: /**
462: * @ejb:interface-method
463: * view-type="both"
464: * Returns instance of interface for building filters for resource.
465: */
466: public ResourceFilterBuilder getResourceFilterBuilder()
467: throws Exception {
468: //initShark();
469: ResourceFilterBuilderEJB builder = null;
470: try {
471: Context initialContext = EJBJNDIContext.getInstance()
472: .getInitialContext();
473: builder = ((org.enhydra.shark.ejb.ResourceFilterBuilderEJBHome) PortableRemoteObject
474: .narrow(
475: initialContext
476: .lookup("org/enhydra/shark/ejb/ResourceFilterBuilderEJB"),
477: org.enhydra.shark.ejb.ResourceFilterBuilderEJBHome.class))
478: .create();
479: return (ResourceFilterBuilderEJB) builder
480: .getPassedEJBObject();
481: } catch (Exception ex) {
482: throw new EJBException(ex);
483: }
484: }
485:
486: /**
487: * @ejb:interface-method
488: * view-type="both"
489: * Returns instance of interface for obtaining XPIL information.
490: */
491: public XPILHandler getXPILHandler() throws Exception {
492: //initShark();
493: XPILHandlerEJB handler = null;
494: try {
495: Context initialContext = EJBJNDIContext.getInstance()
496: .getInitialContext();
497: handler = ((org.enhydra.shark.ejb.XPILHandlerEJBHome) PortableRemoteObject
498: .narrow(
499: initialContext
500: .lookup("org/enhydra/shark/ejb/XPILHandlerEJB"),
501: org.enhydra.shark.ejb.XPILHandlerEJBHome.class))
502: .create();
503: return (XPILHandlerEJB) handler.getPassedEJBObject();
504: } catch (Exception ex) {
505: throw new EJBException(ex);
506: }
507: }
508:
509: /**
510: * @ejb:interface-method
511: * view-type="both"
512: * Returns shark configuration properties.
513: */
514: public NameValue[] getProperties() throws Exception {
515: // throw new Exception("Not implemented yet!");
516: //initShark();
517: return Shark.getInstance().getProperties();
518: }
519:
520: /**
521: * @ejb:interface-method
522: * view-type="both"
523: * Returns desired default plug-in API implementation.
524: */
525: public Object getPlugIn(String name) throws Exception {
526: //initShark();
527: Object sharkPlugIn = Shark.getInstance().getPlugIn(name);
528: Object plugIn = null;
529: if (sharkPlugIn instanceof org.enhydra.shark.api.admin.UserGroupManagerAdmin) {
530: try {
531: Context initialContext = EJBJNDIContext.getInstance()
532: .getInitialContext();
533: plugIn = ((org.enhydra.shark.ejb.UserGroupManagerAdminEJBHome) PortableRemoteObject
534: .narrow(
535: initialContext
536: .lookup("org/enhydra/shark/ejb/UserGroupManagerAdminEJB"),
537: org.enhydra.shark.ejb.UserGroupManagerAdminEJBHome.class))
538: .create();
539:
540: return ((UserGroupManagerAdminEJB) plugIn)
541: .getPassedEJBObject();
542: } catch (Exception ex) {
543: plugIn = null;
544: throw new EJBException(ex);
545: }
546: } else if (sharkPlugIn instanceof org.enhydra.shark.api.admin.ApplicationMappingManagerAdmin) {
547: try {
548: Context initialContext = EJBJNDIContext.getInstance()
549: .getInitialContext();
550: plugIn = ((org.enhydra.shark.ejb.ApplicationMappingMgrAdminEJBHome) PortableRemoteObject
551: .narrow(
552: initialContext
553: .lookup("org/enhydra/shark/ejb/ApplicationMappingMgrAdminEJB"),
554: org.enhydra.shark.ejb.ApplicationMappingMgrAdminEJBHome.class))
555: .create();
556:
557: return ((ApplicationMappingMgrAdminEJB) plugIn)
558: .getPassedEJBObject();
559: } catch (Exception ex) {
560: plugIn = null;
561: throw new EJBException(ex);
562: }
563: } else if (sharkPlugIn instanceof org.enhydra.shark.api.admin.ParticipantMappingManagerAdmin) {
564: try {
565: Context initialContext = EJBJNDIContext.getInstance()
566: .getInitialContext();
567: plugIn = ((org.enhydra.shark.ejb.ParticipantMappingMgrAdminEJBHome) PortableRemoteObject
568: .narrow(
569: initialContext
570: .lookup("org/enhydra/shark/ejb/ParticipantMappingMgrAdminEJB"),
571: org.enhydra.shark.ejb.ParticipantMappingMgrAdminEJBHome.class))
572: .create();
573: return ((ParticipantMappingMgrAdminEJB) plugIn)
574: .getPassedEJBObject();
575: } catch (Exception ex) {
576: plugIn = null;
577: throw new EJBException(ex);
578: }
579: }
580: return null;
581: }
582:
583: /**
584: *
585: * @ejb.interface-method
586: * view-type="both"
587: **/
588: public EJBObject getPassedEJBObject() throws EJBException {
589: try {
590: return context.getEJBObject();
591: } catch (Exception ex) {
592: throw new EJBException(ex);
593: }
594: }
595:
596: public void setSessionContext(SessionContext ctx)
597: throws EJBException, RemoteException {
598: context = ctx;
599: }
600:
601: /**
602: * @ejb:create-method
603: */
604: public void ejbCreate() {
605:
606: }
607:
608: /* (non-Javadoc)
609: * @see javax.ejb.SessionBean#ejbActivate()
610: */
611: public void ejbActivate() throws EJBException, RemoteException {
612:
613: }
614:
615: /* (non-Javadoc)
616: * @see javax.ejb.SessionBean#ejbPassivate()
617: */
618: public void ejbPassivate() throws EJBException, RemoteException {
619: }
620:
621: /* (non-Javadoc)
622: * @see javax.ejb.SessionBean#ejbRemove()
623: */
624: public void ejbRemove() throws EJBException, RemoteException {
625: }
626:
627: }
|