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("test(a)email.com");
| ag.setJobHunter("fuckya");
| ag.setPhoneNumber("1234");
| ag.setSite("mysite");
| agencies[0] = ag;
| Agency ag2 = new AgencyEEjb();
| ag2.setName("ag2");
| ag2.setEmailAddress("t(a)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(a)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(a)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(a)email.com");
| ag.setJobHunter("fuckya");
| ag.setPhoneNumber("1234");
| ag.setSite("mysite");
| agencies[0] = ag;
| Agency ag2 = new AgencyEEjb();
| ag2.setName("ag2");
| ag2.setEmailAddress("t(a)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
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3991773#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...