montei um webservice aqui
olha como ficou
Minha interface é essa
@WebService
public interface Hello {
Pessoa pessoa();
}
minha implementação
@WebService(endpointInterface = "br.teste.Hello")
public class HelloImp implements Hello{
@Override
public Pessoa pessoa() {
Pessoa pessoa = new Pessoa();
pessoa.setNome("Nome teste");
pessoa.setLogin("Login Teste");
pessoa.setSenha("Senha Teste");
return pessoa;
}
}
minha classe pessoa
@XmlRootElement
@XmlType(name="Pessoa")
@XmlAccessorType(XmlAccessType.FIELD)
public class Pessoa implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String nome;
private String login;
@XmlTransient
private String senha;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
minha classe que faz a publicação
public class Publish {
/**
* @param args
*/
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:54321/hello", new HelloImp());
}
}
esse é o xsd gerado da classe pessoa com a senha ignorada
<xs:schema version="1.0" targetNamespace="http://teste.br/">
<xs:element name="pessoa" nillable="true" type="xs:anyType"/>
<xs:element name="pessoaResponse" type="tns:pessoaResponse"/>
<xs:complexType name="pessoa">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="pessoaResponse">
<xs:sequence>
<xs:element name="return" type="tns:Pessoa" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Pessoa">
<xs:sequence>
<xs:element name="nome" type="xs:string" minOccurs="0"/>
<xs:element name="login" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
esse é o wsdl do webservice
<definitions targetNamespace="http://teste.br/" name="HelloImpService">
<types>
<xsd:schema>
<xsd:import namespace="http://teste.br/" schemaLocation="http://127.0.0.1:54321/hello?xsd=1" />
</xsd:schema>
</types>
<message name="pessoa">
<part name="parameters" element="tns:pessoa" />
</message>
<message name="pessoaResponse">
<part name="parameters" element="tns:pessoaResponse" />
</message>
<portType name="Hello">
<operation name="pessoa">
<input message="tns:pessoa" />
<output message="tns:pessoaResponse" />
</operation>
</portType>
<binding name="HelloImpPortBinding" type="tns:Hello">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="pessoa">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="HelloImpService">
<port name="HelloImpPort" binding="tns:HelloImpPortBinding">
<soap:address location="http://127.0.0.1:54321/hello" />
</port>
</service>
</definitions>
não sei se é assim que vc esta fazendo, mas aqui funcionou. se for retirado o @XmlTransient do atributo senha ele irá aparecer no xsd