Wie überträgt man vom Server in die Klasse Client die Arrays bzw. Listen?
Wenn ich im Server dann das Array, das übertragen werden müsste, abfrage kommen immer Exceptions.
int lässt sich aber übertragen...
Bei:
System.out.println("Products: " + client.getCustomerProducts(0)[0]);
(Klasse Client - einzelner Datensatz dient nur zum Test)
Passiert:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
at $Proxy32.getcustomers(Unknown Source)
at demo.hw.server.Client.main(Client.java:21)
Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing.
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
usw.
Server
Interface
Her wer eine Ahnung warum, ich mit dem Client keine Arrays übertragen kann?
Wenn ich im Server dann das Array, das übertragen werden müsste, abfrage kommen immer Exceptions.
int lässt sich aber übertragen...
Bei:
System.out.println("Products: " + client.getCustomerProducts(0)[0]);
(Klasse Client - einzelner Datensatz dient nur zum Test)
Passiert:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
at $Proxy32.getcustomers(Unknown Source)
at demo.hw.server.Client.main(Client.java:21)
Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing.
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
usw.
Server
Java:
package demo.hw.server;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import at.ac.univie.swa.ist.customers.CustomerClient;
@WebService(endpointInterface = "demo.hw.server.InterfaceS",
serviceName = "InterfaceS")
public class Server implements InterfaceS {
CustomerClient neu = new CustomerClient();
public int[] getcustomers(){
//getCustomers liefert eine Liste von Customers, von denen dann einzelne Attribute ausgegeben werden
int[] ids=null;
for(int i = 0; i<neu.getCustomers().getCostumer().size();i++)
ids[i]=(neu.getCustomers().getCostumer().get(i).getId());
return ids;
}
public String[] getCustomerProducts(int customerid){
String[] orders = null;
for(int y = 0; y < neu.getCustomers().getCostumer().get(customerid).getOrder().size();y++)
orders[y]=(neu.getCustomers().getCostumer().get(customerid).getOrder().get(y).getProduct());
return orders;
}
public int getCustomerNumOfOrders(int customerid){
int zaehler=0;
for(int y = 0; y < neu.getCustomers().getCostumer().get(customerid).getOrder().size();y++)
zaehler++;
return zaehler;
}
public static void main(String args[]){
System.out.println("Starting Server");
Server implementor = new Server();
String address = "http://localhost:9000/Server";
Endpoint.publish(address, implementor);
}
}
Java:
package demo.hw.server;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class Client {
public static void main(String args[]){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
factory.setServiceClass(InterfaceS.class);
factory.setAddress("http://localhost:9000/Server");
InterfaceS client = (InterfaceS) factory.create();
System.out.println("Number of Orders: " + client.getCustomerNumOfOrders(0));
// ----Fehler-------
-->//System.out.println("Number of Orders: " + client.getCustomerProducts(0)[0]);
System.exit(0);
}
}
Interface
Java:
package demo.hw.server;
import javax.jws.WebService;
@WebService
public interface InterfaceS {
int getCustomerNumOfOrders(int customerid);
String[] getCustomerProducts(int customerid);
int[] getcustomers();
}
Her wer eine Ahnung warum, ich mit dem Client keine Arrays übertragen kann?