Topic
7 replies Latest Post - ‏2011-09-22T22:42:19Z by CBS3_Ian_Wilson
CBS3_Ian_Wilson
CBS3_Ian_Wilson
13 Posts
ACCEPTED ANSWER

Pinned topic Connecting to PE inside WebSphere using WSI

‏2011-09-22T20:21:43Z |
Hi,

I'm using a P8 4.0.3 environment. I've written a custom Java application, packaged in a Jar. I've run it in Windows & Unix environments and it works perfectly. No problems connecting to Process Engine.

However, if I then host it in a BPF custom tool (a JSP page within BPF on WebSphere 6.1), it fails to connect - I get the exception below.

I've googled this, and there are lots of suggestions about how to fix it. But what I don't understand is that the fixes usually involve configuring for EJB. So my question is, why would you do this when trying to use a WSI transport?? It doesn't make sense. For example, the suggestion to edit sas.client.props, or add ibmorb.jar to the Classpath. These are for EJB... Can somebody explain?

Additionally, can anybody suggest possible resolutions for connecting to PE inside WebSphere, over WSI? Like I say, the code works stand-alone, but same code fails in WAS.

=====================================
com.filenet.api.exception.EngineRuntimeException: TRANSPORT_WSI_LOOKUP_FAILURE: WSI Lookup failed. This is usually caused by environmental/configuration problems - Endpoint http://ceserver:10020/wsi/FNCEWS40MTOM/
filenet.pe.ceutils.ConnectionPoints.run(ConnectionPoints.java:500)
filenet.pe.ceutils.ConnectionPoints.runEx(ConnectionPoints.java:437)
filenet.pe.ceutils.ConnectionPoints.GetAConnectionPointFromACPName(ConnectionPoints.java:785)
filenet.pe.ceutils.ConnectionPoints.GetConnectionPointFromCPURI(ConnectionPoints.java:371)
filenet.pe.ceutils.ConnectionPoints.GetConnectionPointFromBootstrapURI(ConnectionPoints.java:419)
filenet.pe.peorb.client.ORBSession.getConnectionPoint(ORBSession.java:774)
filenet.pe.peorb.client.ORBSession.getJAASContext(ORBSession.java:714)
filenet.pe.peorb.client.ORBSession.establishORBSession(ORBSession.java:623)
filenet.pe.peorb.client.ORBSession.(ORBSession.java:965)
filenet.vw.server.PECommandsFactory.getPECommands(PECommandsFactory.java:119)
filenet.vw.api.VWSession.logonByDomain(VWSession.java:985)
filenet.vw.api.VWSession.logon(VWSession.java:847)
com.mytestapp.ppi.PPReport.PELogon(PPReport.java:78)
com.mytestapp.ppi.PpWmIntra.execute(PpWmIntra.java:66)
com.ibm._jsp._WorkloadMgmtDisplay._jspService(_WorkloadMgmtDisplay.java:89)
com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
==============================================
Updated on 2011-09-22T22:42:19Z at 2011-09-22T22:42:19Z by CBS3_Ian_Wilson
  • drdamour
    drdamour
    15 Posts
    ACCEPTED ANSWER

    Re: Connecting to PE inside WebSphere using WSI

    ‏2011-09-22T21:10:43Z  in response to CBS3_Ian_Wilson
    The probably answer to your question is that most people don't understand how P8 makes connections or JAAS and just try random things till it works.

    My 4.0 knowledge is a bit fuzzy, if i remember right that used WASP instead of Axis2. Do you sure you have all the right JAR's for WASP in your classpath for BPF (the hosting application)? Also what JAAS stanza are you trying to connect with, and is that mapped to the right WSI modules? Are all your JAR's sync'd up (WASP uses the JARs and turns them into WS-* request, so they have to match)

    I also don't recall a "WSI transport for PE" in 4.0 (or really ever). You can connect to CE over WSI, but all PE request are RMI-IIOP i thought. Your error message indicates an attempt to connect to CE using CEWS (MTOM). This happens when you try to authenticate to PE of course. There is a PE WSI interface, but you can't use the pe.jar classes with it.

    A final note, why not use EJB? is your CE in a diff JEE container? IIRC there's a pretty big performance hit using CEWS for CE instead of EJB in 4.0, because of the way the EJB is exposed as CEWS.


    I am Just a new Boy,
    A Stranger in this Town,
    Where are All the Good Times,
    Who's Gonna Show this Stranger Around?
    • CBS3_Ian_Wilson
      CBS3_Ian_Wilson
      13 Posts
      ACCEPTED ANSWER

      Re: Connecting to PE inside WebSphere using WSI

      ‏2011-09-22T22:36:04Z  in response to drdamour
      drdamour, thanks. It may be worthwhile trying EJB.

      Just to clarify, PE Java API relies on the CE for authentication. So, the CE URI is required when first establishing a session. And of course when connecting to the CE to authenticate you get to choose WSI or EJB.

      So, yes, PE listens on IIOP, but the client must go through the CE first.
  • drdamour
    drdamour
    15 Posts
    ACCEPTED ANSWER

    Re: Connecting to PE inside WebSphere using WSI

    ‏2011-09-22T21:27:30Z  in response to CBS3_Ian_Wilson
    One other note, i don't have access to 4.0.3 documentation, but my 4.0.2 documentation has this note in protocols:

    "When developing client applications using the CEWS transport protocol, the URI endpoints you specify differ depending on whether you are creating a .NET client application or a Java client application. For a .NET client application, you must specify FNCEWS40MTOM as the URI endpoint. When developing a Java application, specify FNCEWS40DIME."

    that seems odd to me, might be a documentation flaw, but there might be some restriction as well. On our docs server, the url is http://fndocs/ecm_help402/developer_help/content_engine_api/guide/gs_concepts.htm#gs_transport_protocols you can update host and context root for your doc and check it out.


    I am Just a new Boy,
    A Stranger in this Town,
    Where are All the Good Times,
    Who's Gonna Show this Stranger Around?
    • SystemAdmin
      SystemAdmin
      199 Posts
      ACCEPTED ANSWER

      Re: Connecting to PE inside WebSphere using WSI

      ‏2011-09-22T21:44:08Z  in response to drdamour
      When developing a Java application, specify FNCEWS40DIME

      That wasn't really a restriction so much as advice for a best practice. Some early performance data showed a slight edge for DIME over MTOM, but later data showed it to be pretty much a wash. .NET doesn't support DIME, so MTOM was the advice there. I don't believe it's a factor here, but it wouldn't hurt to try it. (My memory of Systinet days is fading too fast....)
      • drdamour
        drdamour
        15 Posts
        ACCEPTED ANSWER

        Re: Connecting to PE inside WebSphere using WSI

        ‏2011-09-22T22:32:02Z  in response to SystemAdmin
        thanks for the info re: DIME vs MTOM


        I am Just a new Boy,
        A Stranger in this Town,
        Where are All the Good Times,
        Who's Gonna Show this Stranger Around?
  • SystemAdmin
    SystemAdmin
    199 Posts
    ACCEPTED ANSWER

    Re: Connecting to PE inside WebSphere using WSI

    ‏2011-09-22T21:30:48Z  in response to CBS3_Ian_Wilson
    That exception is specific to the Systinet infrastructure used by the CE Java API through CE 4.5.0. (CE 4.5.1 removed the use of Systinet completely.) Unfortunately, we can't tall the underlying problem from what you posted. There should be at least one nested exception, instance of org.systinet.wasp.webservice.LookupException, that might give some clues. Otherwise, alas, all we can advise is that you double-check your client environment (which I'm sure you've already done).

    One quick thing to check ... from your client machine, can you ping "ceserver" with that name? If not, that's the problem.
    • CBS3_Ian_Wilson
      CBS3_Ian_Wilson
      13 Posts
      ACCEPTED ANSWER

      Re: Connecting to PE inside WebSphere using WSI

      ‏2011-09-22T22:42:19Z  in response to SystemAdmin
      Thanks Bill.

      One thing that's just struck me is that my "client" environment (WebSphere) is actually BPF. (This is a BPF custom tool). And BPF communicates with the PE through the PE API. So my client environment, in theory, should already be PE-enabled.

      So it should already be able to ping the CE server, although I will obviously check it.

      My PE code is obviously failing during the initial authentication with the CE. I'm using a WSI endpoint, I would imagine BPF goes through EJB to authenticate on CE. Maybe I really should switch to EJB.