hi 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("[EMAIL PROTECTED]"); | ag.setJobHunter("fuckya"); | ag.setPhoneNumber("1234"); | ag.setSite("mysite"); | agencies[0] = ag; | Agency ag2 = new AgencyEEjb(); | ag2.setName("ag2"); | ag2.setEmailAddress("[EMAIL PROTECTED]"); | 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("[EMAIL PROTECTED]"); | 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("[EMAIL PROTECTED]"); | 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("[EMAIL PROTECTED]"); | ag.setJobHunter("fuckya"); | ag.setPhoneNumber("1234"); | ag.setSite("mysite"); | agencies[0] = ag; | Agency ag2 = new AgencyEEjb(); | ag2.setName("ag2"); | ag2.setEmailAddress("[EMAIL PROTECTED]"); | 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 View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3991773#3991773 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3991773 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user