J2ME/JBossws 1.0.3 / chunking disabled but still error
mmarcom Dec 6, 2006 3:32 PMhi all,
i m fighting trying to have myJ2ME cdlient to communicate iwht my EJB3 Webservice..
i noticed posts about http chunking, so i have disabled http chunking by setting this in deploy/tomcat/server.xml
this is the interface of my WS
/** * Copyright @ 2006 * By Marco Mistroni * Session EJB test */ package com.mm.j2me.ejb; import java.util.Date; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.soap.SOAPBinding; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.jboss.annotation.ejb.RemoteBinding; //import org.jboss.ws.annotation.PortComponent; import com.mm.j2me.core.Agency; import com.mm.j2me.core.JobApplication; import com.mm.j2me.core.Opportunity; import com.mm.j2me.core.User; import com.mm.j2me.core.WSFacade; @WebService (name="WSRemoteSEI", serviceName="WSFacade", targetNamespace="http://org.jboss.ws/ejb3ws") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL) @Stateless @Remote (WSFacade.class) @RemoteBinding( jndiBinding="/ejb3/WSRemoteSEI") public class TestFacade implements WSFacade{ @PersistenceContext EntityManager em; public void deleteAgency(Agency agency) { // TODO Auto-generated method stub Query query = getQuery("findAgencyById"); query.setParameter("id", agency.getId()); Agency agencyToDelete = (Agency)query.getSingleResult(); em.remove(agencyToDelete); } public void deleteJobApplication(JobApplication app) { Query query = getQuery("findJAById"); query.setParameter("id", app.getId()); JobApplication jaToDelete = (JobApplication)query.getSingleResult(); em.remove(jaToDelete); } public void deleteOpportunity(Opportunity opp) { Query query = getQuery("findOpportunityById"); query.setParameter("id", opp.getId()); Opportunity oppToDelete = (Opportunity)query.getSingleResult(); em.remove(oppToDelete); } public Agency[] getAllAgencies() { // TODO Auto-generated method stub Query query = getQuery("findAllAgencies"); List<Agency> list = query.getResultList(); Agency[] agencies = new Agency[list.size()]; return (Agency[])(list.toArray(agencies)); } public JobApplication[] getAllJobApplications() { return new JobApplication[]{}; } public Opportunity[] getAllOpportunities() { //Query query = getQuery("findAllOpportunities"); //return query.getResultList(); return new Opportunity[]{}; } public void insertAgency(Agency agency) { // TODO Auto-generated method stub em.persist(agency); } public void insertJobApplication(JobApplication app) { em.persist(app); } public void insertOpportunity(Opportunity opp) { em.persist(opp); } private Query getQuery(String name) { return em.createNamedQuery(name); } @WebMethod(action="urn:synchronizeAgency") public @WebResult(name="returnAgency")Agency[] synchronizeAgency(@WebParam(name="inAgency")Agency[] inAgency) { Agency[] agencies = new Agency[2]; Agency ag = new AgencyEEjb(); ag.setName("ag1"); ag.setEmailAddress("test@email.com"); ag.setJobHunter("fuckya"); ag.setPhoneNumber("1234"); ag.setSite("mysite"); agencies[0] = ag; Agency ag2 = new AgencyEEjb(); ag2.setName("ag2"); ag2.setEmailAddress("t@email.com"); ag2.setJobHunter("f222"); ag2.setPhoneNumber("122222"); ag2.setSite("mysite222"); agencies[1] = ag2; return agencies; } @WebMethod(action="urn:synchronizeJobApplication") public @WebResult(name="returnJA")JobApplication[] synchronizeJobApplication( @WebParam(name="inJA")JobApplication[] inJA) { JobApplication[] jas = new JobApplication[2]; JobApplication ja1 = new JobApplicationEEjb(); ja1.setAgencyName("Pathway"); ja1.setCompany("Sumitomo Bank"); ja1.setDuration(6); ja1.setJobApplicationTitle("Tester"); ja1.setLocation("Reading"); ja1.setSalary("300/day"); jas[0] = ja1; JobApplication ja2 = new JobApplicationEEjb(); ja2.setAgencyName("Mann"); ja2.setCompany("Lehman Brothers"); ja2.setDuration(6); ja2.setJobApplicationTitle("Sw Engineer"); ja2.setLocation("London"); ja2.setSalary("400/day"); jas[1] = ja2; return jas; } @WebMethod(action="urn:synchronizeOpportunity") public @WebResult(name="returnOpportunity")Opportunity[] synchronizeOpportunity(@WebParam(name="inOpp")Opportunity[] inOpp) { Opportunity[] opps = new Opportunity[2]; Opportunity opps1 = new OpportunityEEjb(); opps1.setAgencyName("IT People"); opps1.setJobHunterName("Syed Ahmed"); opps1.setOpportunityDetails("SW Engineer in London"); opps1.setOpportunityDate(new Date().getTime()); opps1.setOpportunityEmail("mm@tgmm.com"); opps[0] = opps1; Opportunity opps2 = new OpportunityEEjb(); opps2.setAgencyName("Computer People"); opps2.setJobHunterName("Menachim Begin"); opps2.setOpportunityDetails("SW Engineer in France"); opps2.setOpportunityDate(new Date().getTime()); opps2.setOpportunityEmail("mm@tgmm.com"); opps[1] = opps2; return opps; } @WebMethod(action="urn:login") public void login(@WebParam(name="username")String user, @WebParam(name="password")String password) { System.err.println("----- loggging in....."); } // Original sample @WebMethod(action="urn:testWebServiceMethod") public @WebResult(name="returnAgency")Agency[] testWebServiceMethod( @WebParam(name="inAgency") Agency[] inAgency) { Agency[] agencies = new Agency[2]; Agency ag = new AgencyEEjb(); ag.setName("ag1"); ag.setEmailAddress("test@email.com"); ag.setJobHunter("fuckya"); ag.setPhoneNumber("1234"); ag.setSite("mysite"); agencies[0] = ag; Agency ag2 = new AgencyEEjb(); ag2.setName("ag2"); ag2.setEmailAddress("t@email.com"); ag2.setJobHunter("f222"); ag2.setPhoneNumber("122222"); ag2.setSite("mysite222"); agencies[1] = ag2; return agencies; } public void storeAgency(Agency agency) { // TODO Auto-generated method stub } public void storeJobApplication(JobApplication ja) { // TODO Auto-generated method stub } public void storeOpportunity(Opportunity opp) { // TODO Auto-generated method stub } }
i am testing the login method (which returns void)
this is the response that my j2me client gets
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header/> <env:Body><ns1:loginResponse xmlns:ns1='http://org.jboss.ws/ejb3ws' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'/> </env:Body> </env:Envelope>
still, i am getting this exception from midp
AXRPcC EXception. javax.xml.rpc.JAXRPCException: java.rmi.MarshalException: (1)Missing end tag for Body or Envelope at com.sun.j2mews.xml.rpc.SOAPDecoder.decode(+243) at com.sun.j2mews.xml.rpc.OperationImpl.invoke(+90) at com.mm.j2me.ws.WSRemoteSEI_Stub.login(+48) at com.mm.j2me.midp.model.HTTPCommunicationHandler.createAccount(+36) at com.mm.j2me.midp.model.RemoteModelRequestHandler.createAccount(+16) at com.mm.j2me.midp.model.RemoteModelProxy.createAccount(+16) at com.mm.j2me.midp.model.ModelFacade.createAccount(+16) at com.mm.j2me.midp.ui.UIController$EventDispatcher.run(+277)
can anyone help pls? i have been stuck with this for 4 days....
thanks and regards
marco