3 Replies Latest reply on Apr 13, 2006 6:20 AM by oliv06

    JBossWS performances versus other JavaEE Application Server

    oliv06

      Hi all,

      I'm evaluating some application servers. Jboss was for me THE choice, but Web Services are something very important for us and we are in front of serious performance issue.

      I use a web service to send up to 4000 customers objects, JBoss is really
      slow compared to others application servers.

      There is no database issue involved.

      I must be missing some jboss configurations ?

      Could you please help me ?


      Here are the results (milliseconds to get the data on a client app -every tests on the same machine) :

      Number of Customers 100 200 300 1000 2000 4000


      WS JBoss 4.0.3SP1
      & JDK1.4
      (-Xms128m -Xmx512m) 550 1030 1600 5500 10400 21300

      WS Jboss 4.0.4CR2
      & JDK 1.5
      (-Xms128m -Xmx512m)
      ? log level ERROR 400 800 1250 5000 40000 257500

      WSAD 5.1.1 30 30 30 190 360 900

      GlassFish 15 15 15 80 130 300

      WS .NET (2.0) 15 15 15 60 125 240


      As you can see, performances are very far of competitors one... I cannot believe this comes from JBOSS...but I don't know what to do.

      This tests are all done with out of the box and development AS without specific tuning.


      Simple code:

      @Stateless()
      @WebService()
      public class TestPerfWSBean implements org.testperf.ejb.session.TestPerfWSRemote {
      
       @WebMethod()
       public Customer[] getCustomers(int nbCustomers){
       Customer[] arrCustomers = new Customer[nbCustomers];
      
       for (int i=0; i<nbCustomers; i++) {
       Customer cust = new Customer();
       cust.setAddress1(i+"--------------------------------------------------ADDRESS_1--"+i+"--------------------------------------------------");
       cust.setAddress2(i*2+"--------------------------------------------------ADDRESS_2--"+i*2+"--------------------------------------------------");
       cust.setBirthdate(new Date(System.currentTimeMillis()));
       cust.setCountry(i+"-COUNTRY-"+i+"-");
       cust.setFirstname(i+"-FIRSTNAME-"+i+"-");
       cust.setId(i*12345+"-ID-"+i*98765+"**");
       cust.setLastname(i+"----LASTNAME-"+i+"----");
       cust.setType(i+"-TYPE-"+i+"-");
      
       arrCustomers = cust;
       }
      
       return arrCustomers;
       }
       }
      
       public class Customer implements Serializable {
       private final static long serialVersionUID = 123456;
       private String id;
       private String firstname;
       private String lastname;
       private Date birthdate;
       private String type;
       private String address1;
       private String address2;
       private String country;
      
       public String getAddress1() {
       return address1;
       }
       public void setAddress1(String address1) {
       this.address1 = address1;
       }
       public String getAddress2() {
       return address2;
       }
       public void setAddress2(String address2) {
       this.address2 = address2;
       }
       public Date getBirthdate() {
       return birthdate;
       }
       public void setBirthdate(Date birthdate) {
       this.birthdate = birthdate;
       }
       public String getCountry() {
       return country;
       }
       public void setCountry(String country) {
       this.country = country;
       }
       public String getFirstname() {
       return firstname;
       }
       public void setFirstname(String firstname) {
       this.firstname = firstname;
       }
       public String getId() {
       return id;
       }
       public void setId(String id) {
       this.id = id;
       }
       public String getLastname() {
       return lastname;
       }
       public void setLastname(String lastname) {
       this.lastname = lastname;
       }
       public String getType() {
       return type;
       }
       public void setType(String type) {
       this.type = type;
       }
       }


      Hope you have enough information to help me!