[jboss-user] [JBossWS] - Re: trying to access a webservice - not working from either

rodgerca do-not-reply at jboss.com
Tue Jul 24 12:07:46 EDT 2007


I generated the wsdl from the code

Here is the code:-

****************INTERFACE******************

package com.cmmgroup.address.session;
import java.rmi.Remote;
import java.util.List;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import com.cmmgroup.address.entities.POAddress;

@WebService
@SOAPBinding(style = javax.jws.soap.SOAPBinding.Style.RPC)
public interface POAddressManagerWS extends Remote {

	@SuppressWarnings("unchecked")
	public List getAddressByPostCode(String postCode);
	@SuppressWarnings("unchecked")
	public List getAddressByText(String textString);

}

*********************SESSION BEAN********************8

package com.cmmgroup.address.session;

import java.io.Serializable;
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.cmmgroup.address.entities.POAddress;
@Stateless
@WebService(endpointInterface = "com.cmmgroup.address.session.POAddressManagerWS")
public class POAddressManagerBean implements Serializable, POAddressManagerRemote, POAddressManagerLocal, POAddressManagerWS {
	
	private static final long serialVersionUID = 1L;
	
	@PersistenceContext(unitName="phoebusDS")
	private EntityManager em;
	
	@SuppressWarnings("unchecked")
	public List getAddressByPostCode(String postCode) {
		
		Query query = em.createNamedQuery("getAddrByPC");
		query.setParameter("pc",postCode + "%");
		
		return query.getResultList();
	}
	
	@SuppressWarnings("unchecked")
	public List getAddressByText(String textString) {
		
		Query query = em.createNamedQuery("getAddrByText");
		query.setParameter("text",textString);
		
		return query.getResultList();
	}
}
*********************ENTITY BEAN****************
package com.cmmgroup.address.entities;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
import javax.persistence.Table;

@NamedNativeQueries({
	@NamedNativeQuery(name="getAddrByPC",query="select id, postCode, thoroughFare1, thoroughFare2, locality1, locality2, post_town, county from postcodes where postCode like :pc",resultClass=POAddress.class),
	@NamedNativeQuery(name="getAddrByText",query="select id, postCode, thoroughFare1, thoroughFare2, locality1, locality2, post_town, county from postcodes where CATSEARCH(address, :text,null)> 0",resultClass=POAddress.class),
	})
@Entity
@Table(name="POSTCODES")
public class POAddress implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	private long id;
	private String postCode;
	private String thoroughFare1;
	private String thoroughFare2;
	private String locality1;
	private String locality2;
	private String post_Town;
	private String county;
	
	public POAddress() {
		super();
	}

	public POAddress(String postCode, String thoroughFare1, String thoroughFare2, String locality1, String locality2, String post_Town, String county) {
		super();
		this.postCode = postCode;
		this.thoroughFare1 = thoroughFare1;
		this.thoroughFare2 = thoroughFare2;
		this.locality1 = locality1;
		this.locality2 = locality2;
		this.post_Town = post_Town;
		this.county = county;
	}

	public String getCounty() {
		return county;
	}

	public void setCounty(String county) {
		this.county = county;
	}

	public String getLocality1() {
		return locality1;
	}

	public void setLocality1(String locality1) {
		this.locality1 = locality1;
	}

	public String getLocality2() {
		return locality2;
	}

	public void setLocality2(String locality2) {
		this.locality2 = locality2;
	}

	public String getPostCode() {
		return postCode;
	}

	public void setPostCode(String postCode) {
		this.postCode = postCode;
	}

	public String getPostTown() {
		return post_Town;
	}

	public void setPostTown(String postTown) {
		this.post_Town = postTown;
	}

	public String getThoroughFare1() {
		return thoroughFare1;
	}

	public void setThoroughFare1(String thoroughFare1) {
		this.thoroughFare1 = thoroughFare1;
	}

	public String getThoroughFare2() {
		return thoroughFare2;
	}

	public void setThoroughFare2(String thoroughFare2) {
		this.thoroughFare2 = thoroughFare2;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getPost_Town() {
		return post_Town;
	}

	public void setPost_Town(String post_Town) {
		this.post_Town = post_Town;
	}
}

The bean runs fine when using the remote or local interface

***************************MY TEST STUB***************

package com.cmmgroup.address.client;

import java.net.URL;

import javax.xml.namespace.QName;

//import org.jboss.system.ServiceFactory;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;

import com.cmmgroup.address.entities.POAddress;
import com.cmmgroup.address.session.POAddressManagerWS;

public class RunAddressAsWebService {
    public static void main(String[] args) throws Exception {
        System.out.println("Starting Test Client");
        URL url = new URL("http://127.0.0.1:8080/POAddressManagerBeanService/POAddressManagerBean?wsdl");
        QName qname = new QName(
                        "http://session.address.cmmgroup.com/",
                        "POAddressManagerBeanService");

        System.out.println("Creating a service Using: \n\t" 
                                   + url + " \n\tand " + qname);
        ServiceFactory factory = ServiceFactory.newInstance();
        System.out.println("Created new instance");
        
        Service remote = factory.createService(url, qname);

        System.out.println("Obtaining reference to a proxy object");
        POAddressManagerWS proxy = (POAddressManagerWS) remote.getPort(POAddressManagerWS.class);
        System.out.println("Accessed local proxy: " + proxy);
       
		for(POAddress address:proxy.getAddressByPostCode("IP4 4B"))
		{
			System.out.println(address.getThoroughFare1() + " " + address.getPostCode());
		}
             
   }
}

********************WSDL INTERFACE GENERATED**********

<definitions name="POAddressManagerBeanService" targetNamespace="http://session.address.cmmgroup.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://session.address.cmmgroup.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- 
- <xs:schema targetNamespace="http://session.address.cmmgroup.com/" version="1.0" xmlns:tns="http://session.address.cmmgroup.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="getAddressByPostCode" type="tns:getAddressByPostCode" /> 
  <xs:element name="getAddressByPostCodeResponse" type="tns:getAddressByPostCodeResponse" /> 
  <xs:element name="getAddressByText" type="tns:getAddressByText" /> 
  <xs:element name="getAddressByTextResponse" type="tns:getAddressByTextResponse" /> 
- <xs:complexType name="getAddressByPostCode">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="getAddressByPostCodeResponse">
- <xs:sequence>
  <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:poAddress" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="poAddress">
- <xs:sequence>
  <xs:element minOccurs="0" name="county" type="xs:string" /> 
  <xs:element name="id" type="xs:long" /> 
  <xs:element minOccurs="0" name="locality1" type="xs:string" /> 
  <xs:element minOccurs="0" name="locality2" type="xs:string" /> 
  <xs:element minOccurs="0" name="postCode" type="xs:string" /> 
  <xs:element minOccurs="0" name="postTown" type="xs:string" /> 
  <xs:element minOccurs="0" name="post_Town" type="xs:string" /> 
  <xs:element minOccurs="0" name="thoroughFare1" type="xs:string" /> 
  <xs:element minOccurs="0" name="thoroughFare2" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="getAddressByText">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="getAddressByTextResponse">
- <xs:sequence>
  <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:poAddress" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:schema>
  
- 
   
  
- 
   
  
- 
   
  
- 
   
  
- 
- 
   
   
  
- 
   
   
  
  
- 
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
- 
  <soap:operation soapAction="" /> 
- 
  <soap:body use="literal" /> 
  
- 
  <soap:body use="literal" /> 
  
  
- 
  <soap:operation soapAction="" /> 
- 
  <soap:body use="literal" /> 
  
- 
  <soap:body use="literal" /> 
  
  
  
- 
- 
  <soap:address location="http://127.0.0.1:8080/POAddressManagerBeanService/POAddressManagerBean" /> 
  
  
  

Enjoy ;-)


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4067094#4067094

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4067094



More information about the jboss-user mailing list