This discussion is archived
4 Replies Latest reply: Jun 27, 2011 3:18 AM by kai - oracle RSS

Implementing CDF (Diameter server)

833763 Newbie
Currently Being Moderated
According to the diameter development manual it is possible to implement a diameter client to act as a CTF and to issue offline charging event to a configured server (CDF).
My question: is it possible to develop on-top of that same diameter stack an application that will act as server (CDF) to receive offline charging events. Its not that clear if OCCAS 5.0 support such capabilities in its diameter implementation
  • 1. Re: Implementing CDF (Diameter server)
    kai - oracle Explorer
    Currently Being Moderated
    Hello,

    I think this question can't be 100% answered in a forum. But I guess it is possible.

    1. Basically you can set and lookup available diameter applications via:

    ServletContext sc = getServletConfig().getServletContext();
    Node node = (Node) sc.getAttribute("com.bea.wcp.diameter.Node");
    AppManager appmanager = node.getAppManager();
    appmanager.addApplication(Application app);
    appmanager.getApplications();

    See: http://download.oracle.com/docs/cd/E17645_01/doc.50/e18767/html/com/bea/wcp/diameter/Node.html
    See: http://download.oracle.com/docs/cd/E17645_01/doc.50/e18767/html/com/bea/wcp/diameter/AppManager.html

    2. You can create your own application and those can either be server are client applications accroding to the API docs.

    There are already 3 application implementions (ClientApplication, RelayApplication, Simulator) but as I would understand the doc, this works with you own implementation as well.

    So I would guess you can just create a class extending this class com.bea.wcp.diameter.Application and than add it to the application manager via appmanager.addApplication(Application app).

    See: http://download.oracle.com/docs/cd/E17645_01/doc.50/e18767/html/com/bea/wcp/diameter/Application.html

    3. I guess, when it becomes more detailed the best is to track further questions via service request.

    BR,
    Kai
  • 2. Re: Implementing CDF (Diameter server)
    kai - oracle Explorer
    Currently Being Moderated
    Further, because you are free to add every AVP you like to a Diamater message even the diameter API does not already provide pre- define message, you can implement every message you like as well.

    - So a new Request or Answer can be created via MessageFactory.createRequest() and MessageFactory.createAnswer()

    See: http://download.oracle.com/docs/cd/E17645_01/doc.50/e18767/html/com/bea/wcp/diameter/MessageFactory.html

    - And any AVP can be added to the message via Message.addAvp()

    See: http://download.oracle.com/docs/cd/E17645_01/doc.50/e18767/html/com/bea/wcp/diameter/Message.html

    I hope this helps a bit.
    /Kai
  • 3. Re: Implementing CDF (Diameter server)
    833763 Newbie
    Currently Being Moderated
    Thanks!

    This is what I actually did. I created my own application that will handle callback function of rcvRequest(..)
    Is there other why that I can't get instance of Diameter Node that is not through Servlet?

    Thanks,
    Shlomi
  • 4. Re: Implementing CDF (Diameter server)
    kai - oracle Explorer
    Currently Being Moderated
    Is there other why that I can't get instance of Diameter Node that is not through Servlet?
    You mean you like to execute the commands below outside of a SIP servlet to not have a servlet started at all? I'm not sure whether this is working, opening a SR might bring an official support statement and one can check this with development and product management.

    ServletContext sc = getServletConfig().getServletContext();
    Node node = (Node) sc.getAttribute("com.bea.wcp.diameter.Node");

    But you always can auto start an empty SIP servlet via an entry inside sip.xml and only place all your logic accessing '"com.bea.wcp.diameter.Node" inside the init() method and do not specify any doXXX() method so that no SIP work is handled at all.

    <servlet>
    <javaee:servlet-name>myDiameterServerStarter</javaee:servlet-name>
    <javaee:servlet-class>my.diameter.server.startClass</javaee:servlet-class>
    <javaee:load-on-startup>1</javaee:load-on-startup>
    </servlet>

    If this is not enough, you can also create SIP timers to check other resources like JMS queues via the diameter starter servlet implement the timer listener interface.

    http://download.oracle.com/docs/cd/E13153_01/wlcp/wlss40/javadoc/jsr289/javax/servlet/sip/TimerListener.html

    Best regards,
    Kai

    To reach a wider audience for your question please consider posting on the My Oracle Support forum
    https://communities.oracle.com/portal/server.pt/community/service_delivery_platform.

    Edited by: Kai on 27.06.2011 03:10

    Edited by: Kai on 27.06.2011 03:16

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points