You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Younsoo <sh...@tmax.co.kr> on 2002/05/09 03:28:20 UTC

an expedient way to make a webservice using EJB

  I solved this problem easily. This is my old EJB webservice config.

--------------------------------------------- Old Config --------------------------------------------------
 <service name="MyAccount" provider="java:EJB">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="jndiURL" value="localhost"/>
  <parameter name="scope" value="request"/>
  <parameter name="beanJndiName" value="TestAccount"/>
  <parameter name="homeInterfaceName" value="testaccount.TestAccountHome"/>
 </service>
----------------------------------------------------------------------------------------------------------------

  The beta2 axis can't resolve methods in EJB. so I add "allowedMethods" and "className" parameters.

--------------------------------------------- New Config --------------------------------------------------
 <service name="MyAccount" provider="java:EJB">
  <parameter name="allowedMethods" value="deposit withdraw getBalance getFormattedBalance"/>
  <parameter name="jndiURL" value="localhost"/>
  <parameter name="scope" value="application"/>
  <parameter name="beanJndiName" value="TestAccount"/>
  <parameter name="homeInterfaceName" value="testaccount.TestAccountHome"/>
  <parameter name="className" value="testaccount.TestAccount"/>
 </service>
----------------------------------------------------------------------------------------------------------------

  These are my EJB source code.

----------------------------------------- TestAccount.java -------------------------------------
package testaccount;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface TestAccount extends EJBObject {
    int deposit (int amount) throws RemoteException;
    int withdraw (int amount) throws RemoteException;
    int getBalance() throws RemoteException;
    String getFormattedBalance() throws RemoteException;
}

----------------------------------------- TestAccountHome.java -------------------------------------
package testaccount;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface TestAccountHome extends EJBHome {
    TestAccount create() throws RemoteException, CreateException;
    TestAccount create(int startingBalance) throws RemoteException, CreateException;
}

----------------------------------------- TestAccountEJB.java -------------------------------------
package testaccount;

import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;


public class TestAccountEJB implements SessionBean {

    private int balance = 0;

    public TestAccountEJB() {
    }

    public int deposit (int amount) throws RemoteException {
    balance += amount;   
    return balance;     
    } 

    public int withdraw (int amount) throws RemoteException {
    int withdrawn;  
    
    if (balance >= amount) {
            withdrawn = amount;
    } else {
       withdrawn = balance;
    }
    
    balance -= withdrawn;
    return withdrawn;      
    }

    public int getBalance() throws RemoteException {
    return balance;        
    }

    public String getFormattedBalance() throws RemoteException {
    int wholeBalance = balance/100;  
    int cents = balance % 100 ;  
    
    if (balance >= 0) {
        return new String ("$" + wholeBalance + "." + cents);
    } else {
        return new String ("$" + "(" + wholeBalance + "." + cents + ")");
    }
    }


    public void ejbCreate() throws RemoteException {
    balance = 0;
    }

    public void ejbCreate(int starting) throws RemoteException {
    balance = starting;
    }

    public void setSessionContext(SessionContext sc) {
    }

    public void ejbRemove() throws RemoteException {
    }

    public void ejbActivate() {
    }

    public void ejbPassivate() {
    }
}