[RESOLVIDO]erro cliente WEB SERVICE address location

Boa tarde.

estou com um problema estranho.
estou trabalhando com um projeto que faz integração com outro sistema a partir de um WebService.
tentei criar o cliente na mão e obtive o seguinte erro:

com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.UnknownHostException: vm-jbosshomolog01.NaoTemImportancia.gov.br

fiquei horas tentando achar o problema, resolvi deixar o IDE criar o cliente para mim. porém obtive a msm exception.
então fui analisar o xml do web service e encontrei isso:

port name="UsuarioSistemaWSPort" binding="tns:UsuarioSistemaWSBinding"> <soap:address location="http://vm-jbosshomolog01.NaoTemImportancia.gov.br:8080/PROJETO/UsuarioSistemaWS"/> </port>

encontrei a causa do erro, ele não está encontrando o address location… de fato se eu copiar a URL e colocar no browser nao encontra msm.
o address location é o endereço do web service, que deveria ser http://10.60.43.8:8080/PROJETO/UsuarioSistemaWS
nao sei pq esse endereço está errado no WS.
tem alguma maneira de mudar o endereço no cliente?
substituir http://vm-jbosshomolog01.NaoTemImportancia.gov.br:8080 por http://10.60.43.8:8080.

Tive um problema parecido quando subi o JBoss EAP 5.1 com o parâmetro “-b 0.0.0.0”, que faz o JBoss pegar o “nome/ip” do servidor e colocar no WSDL.

Para resolver isso edite o arquivo:
JBOSS_HOME/server/default/deployers/jbossws.deployer/META-INF/jboss-beans.xml

De
${jboss.bind.address}

Para
jbossws.undefined.host

[code]package br.com.infokey;

import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.content.Context;
import android.widget.Toast;

public enum Icicle {
INSTANCE;

private String SOAP_ACTION = "";
private String METHOD_NAME = "login";
private String NAMESPACE = "http://server.webservice.com.br/";
private String URL = "";
private String serviceResponse;
private String sellerID;
private List&lt;String&gt; historico = new ArrayList&lt;String&gt;();
private Context currentContext;

public Context getCurrentContext() {
	return currentContext;
}
public void setCurrentContext(Context currentContext) {
	this.currentContext = currentContext;
}
public List&lt;String&gt; getHistorico() {
	return historico;
}
public void setHistorico(List&lt;SoapPrimitive&gt; historico) {
	this.historico.clear();
	for(int i=0;i&lt;historico.size();i++)
		this.historico.add(historico.get(i).toString());
}
public String getSOAP_ACTION() {
	return SOAP_ACTION;
}
public void setSOAP_ACTION(String sOAP_ACTION) {
	SOAP_ACTION = sOAP_ACTION;
}
public String getMETHOD_NAME() {
	return METHOD_NAME;
}
public void setMETHOD_NAME(String mETHOD_NAME) {
	METHOD_NAME = mETHOD_NAME;
}
public String getNAMESPACE() {
	return NAMESPACE;
}
public void setNAMESPACE(String nAMESPACE) {
	NAMESPACE = nAMESPACE;
}
public String getURL() {
	return URL;
}
public void setURL(String uRL) {
	URL = uRL;
}
public String getServiceResponse() {
	return serviceResponse;
}
public void setServiceResponse(String response) {
	this.serviceResponse = response;
}
public String getSellerID() {
	return sellerID;
}
public void setSellerID(String sellerID) {
	this.sellerID = sellerID;
}

public SoapSerializationEnvelope callService(SoapObject request){

// this.setSOAP_ACTION(this.getNAMESPACE() + “/” + this.getMETHOD_NAME());

	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    
    envelope.setOutputSoapObject(request);
    
    HttpTransportSE ht = new HttpTransportSE(Icicle.INSTANCE.getURL());
    try {
    	ht.debug = true;
    	ht.call(Icicle.INSTANCE.getSOAP_ACTION(), envelope);
    } catch (Exception e) {
        e.printStackTrace();
    }
    
    return envelope;
	
}
public void getPrimitiveResponse(SoapSerializationEnvelope envelope){
	SoapPrimitive response = null;
	String retorno = "Erro na resposta do servidor!";
	
	try {
		response = (SoapPrimitive)envelope.getResponse();
	} catch (SoapFault e) {
		e.printStackTrace();
	}
	catch(NullPointerException e){
		Toast.makeText(getCurrentContext(), "Erro na troca de mensagens com o servidor!", Toast.LENGTH_LONG).show();
	}
	if(response!=null){
		retorno = response.toString();
	}
	this.setServiceResponse(retorno);
	
}
public void getCollectionResponse(SoapSerializationEnvelope envelope){
	KvmSerializable response = null;
	try{
	response = (KvmSerializable)envelope.bodyIn;
	}catch(NullPointerException e){
		Toast.makeText(getCurrentContext(), "Erro na troca de mensagens com o servidor!", Toast.LENGTH_LONG).show();
	}
	if(response!=null){
    	List&gt;&lt;SoapPrimitive&gt; objects = new ArrayList&lt;SoapPrimitive&gt;();
    	for (int i = 0; i &lt; response.getPropertyCount(); i++) {
    		objects.add((SoapPrimitive) response.getProperty(i));
    		
    	}
    	this.setHistorico(objects);

    }
	
}

}
[/code]

package br.com.infokey;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class HistoryAdapter extends BaseAdapter {

    private Context context;
    private List&lt;String&gt; texts = new ArrayList&lt;String&gt;();

    public HistoryAdapter(Context context) {
        this.context = context;
    }

    public int getCount() {
        return texts.size();
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        TextView tv;
        if (convertView == null) {
            tv = new TextView(context);
            tv.setTextColor(0xFF3333FF);
//            tv.setLayoutParams(new GridView.LayoutParams(85, 25));
        }
        else {
            tv = (TextView) convertView;
            tv.setTextColor(0xFF3333FF);
        }

            tv.setText(texts.get(position));
        return tv;
    }

	public List&lt;String&gt; getTexts() {
		return texts;
	}

	public void setTexts(List&lt;String&gt; texts) {
		this.texts = texts;
	}
}

package br.com.infokey;

import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;

public class HistoryGridActivity extends Activity {
	GridView historyGrid;
	HistoryAdapter adapter;
	HistoryGridActivity self = this;

	@Override
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.historygrid);
        adapter = new HistoryAdapter(this);
        
        adapter.setTexts(Icicle.INSTANCE.getHistorico());
        
        historyGrid = (GridView) findViewById(R.id.historyGridView);
        historyGrid.setAdapter(adapter);
        setTitle(&quot;Historico&quot;);
        Icicle.INSTANCE.setCurrentContext(self);
	}
	
	@Override
	public void onUserLeaveHint(){
		finish();
	}
}
package br.com.infokey;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;

import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity{
	EditText loginET,passwordET;
	Button loginBt;
	MainActivity self = this;
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        loginET = (EditText) findViewById(R.id.loginEditText);
        passwordET = (EditText) findViewById(R.id.passwordEditText);
        passwordET.setTransformationMethod(PasswordTransformationMethod.getInstance());
        loginBt = (Button) findViewById(R.id.loginButton);
        loadAssets();
        setTitle(&quot;Login&quot;);
        Icicle.INSTANCE.setCurrentContext(self);
        System.setProperty(&quot;http.keepAlive&quot;, &quot;false&quot;);
        
        loginBt.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				if(self.login(loginET.getText().toString(),passwordET.getText().toString())){
					startActivity(new Intent(self,RegistryActivity.class));
					finish();
				}
			}
		});
    }


	public void loadAssets() {
		Resources res = this.getResources();
		AssetManager assetmanager = res.getAssets();
		try {
			InputStream is = assetmanager.open(&quot;server.properties&quot;);
			Properties properties = new Properties();
			properties.load(is);
			Icicle.INSTANCE.setURL(properties.getProperty(&quot;serverURL&quot;));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}


	public boolean login(String login, String password) {
			
		if(login.length() &lt; 2 || password.length() &lt; 2){
    		Toast.makeText(self, &quot;Login ou senha n&#65533;o permitido com menos de 2 caracteres&quot;, Toast.LENGTH_LONG).show();
    		return false;
    	}
		Icicle.INSTANCE.setSellerID(login);//armazenando o cpf/cnpj do vendedor no Icicle
		// metodo no server-side login(String login, String senha)
		Icicle.INSTANCE.setMETHOD_NAME(&quot;login&quot;);
		
		SoapObject request = new SoapObject(Icicle.INSTANCE.getNAMESPACE(), Icicle.INSTANCE.getMETHOD_NAME());
		request.addProperty(&quot;login&quot;,login);
		request.addProperty(&quot;senha&quot;,password);
		
		SoapSerializationEnvelope envelope = Icicle.INSTANCE.callService(request);
		Icicle.INSTANCE.getPrimitiveResponse(envelope);
		
	    if(Icicle.INSTANCE.getServiceResponse().equals(&quot;true&quot;)){
	    	return true;
	    }
	    else {
	    	if(Icicle.INSTANCE.getServiceResponse().equals(&quot;false&quot;)){
	    		Toast.makeText(self, &quot;Login ou senha inv&#65533;lido! Tente novamente&quot;, Toast.LENGTH_LONG).show();
		    	return false;
		    }
	    	
	    	return false;
	    }
	}
    
}

package br.com.infokey;

import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class RegistryActivity extends Activity {
	
	EditText numeroVendedorET,numeroPropostaET;
	Button sendBt,historyBt;
	RegistryActivity self = this;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registry);
        numeroVendedorET = (EditText) findViewById(R.id.numeroVendedorEditText);
        numeroPropostaET = (EditText) findViewById(R.id.numeroPropostaEditText);
        sendBt = (Button) findViewById(R.id.sendButton);
        historyBt = (Button) findViewById(R.id.historyButton);
        
        setTitle(&quot;Cadastro&quot;);
        Icicle.INSTANCE.setCurrentContext(self);
        
        sendBt.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				
				if(!cadastraFichaVenda(numeroVendedorET.getText().toString(),numeroPropostaET.getText().toString()).equals(&quot;Erro ao tentar enviar os dados ao servidor!&quot;)){
					startActivity(new Intent(self,ResponseActivity.class));
				}
				
			}
		});
        historyBt.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				
				historicoSenha();
				
				startActivity(new Intent(self,HistoryGridActivity.class));
				
			}
		});
        
        
    }
	public String cadastraFichaVenda(String numeroVendedor,String numeroProposta){
		if(numeroVendedor.length() &lt; 2 || numeroProposta.length() &lt; 2){
    		Toast.makeText(self, &quot;Campos de No. de vendedor ou No. de proposta inv&#65533;lido!&quot;, Toast.LENGTH_LONG).show();
    		return &quot;Erro ao tentar enviar os dados ao servidor!&quot;;
    	}
		Icicle.INSTANCE.setMETHOD_NAME(&quot;cadastraFichaVenda&quot;);
		
	    SoapObject request = new SoapObject(Icicle.INSTANCE.getNAMESPACE(), Icicle.INSTANCE.getMETHOD_NAME());
	    request.addProperty(&quot;numeroVendedor&quot;,numeroVendedor);
	    request.addProperty(&quot;numeroProposta&quot;,numeroProposta);
	    request.addProperty(&quot;cpfVendedor&quot;,Icicle.INSTANCE.getSellerID());
	    
	    SoapSerializationEnvelope envelope = Icicle.INSTANCE.callService(request);
	    Icicle.INSTANCE.getPrimitiveResponse(envelope);
	    
	    return Icicle.INSTANCE.getServiceResponse();
		
	}
	public String historicoSenha(){
		Icicle.INSTANCE.setMETHOD_NAME(&quot;historicoSenha&quot;);
		
	    SoapObject request = new SoapObject(Icicle.INSTANCE.getNAMESPACE(), Icicle.INSTANCE.getMETHOD_NAME());
	    request.addProperty(&quot;cpfVendedor&quot;,Icicle.INSTANCE.getSellerID());
	    
	    SoapSerializationEnvelope envelope = Icicle.INSTANCE.callService(request);
	    Icicle.INSTANCE.getCollectionResponse(envelope);
	    
	    return Icicle.INSTANCE.getServiceResponse();
		
	}

}

package br.com.infokey;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class ResponseActivity extends Activity {

	TextView responseTV;
	ResponseActivity self = this;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.response);
        this.responseTV = (TextView) findViewById(R.id.senhaTextView);
        this.responseTV.setText(Icicle.INSTANCE.getServiceResponse());
        setTitle(&quot;Senha&quot;);
        Icicle.INSTANCE.setCurrentContext(self);
    }
	
	@Override
	public void onUserLeaveHint(){
		finish();
	}
}

Colegas…
esqueci de copiar o fonte do WS antes de ir pra casa, só vou poder testar segunda.
:slight_smile:
como o WS ainda ta em ambiente de homologação não vai da pra eu acessar aqui.

obrigado pelas dicas…qualquer duvida eu posto.

abraço…

RESOLVIDO!!

solução:
foi dado o msm endereço DNS que o jboss estava gerando para o endereço IP do WS.

Otimo cara…