Hallo Community,
ich bin mich momentan mit Webservices am einarbeiten und benutze das Apache CXF Framework. Nun wollte ich einen kleinen Service erstellen und in einer Methode ein Session.Objekt zurückgeben.
JavaBean
Wenn ich nun über den Webservice das Objekt abrufen möchte, dann bekomme ich immer ein Objekt zurück, jedoch die Variablen user & sessionKey sind "NULL". Wie mache ich das die Daten korrekt übertragen werden?
Webservice Interface
Webservice Implementation
ich bin mich momentan mit Webservices am einarbeiten und benutze das Apache CXF Framework. Nun wollte ich einen kleinen Service erstellen und in einer Methode ein Session.Objekt zurückgeben.
JavaBean
Java:
package com.mmo.loginserver.beans;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="sessions")
public class Session implements Serializable
{
@Id
@Column(name="sessionkey")
private String sessionKey;
@Column(name="username")
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getSessionKey() {
return sessionKey;
}
public void setSessionKey(String sessionKey) {
this.sessionKey = sessionKey;
}
}
Wenn ich nun über den Webservice das Objekt abrufen möchte, dann bekomme ich immer ein Objekt zurück, jedoch die Variablen user & sessionKey sind "NULL". Wie mache ich das die Daten korrekt übertragen werden?
Webservice Interface
Java:
package com.mmo.loginserver.interfaces;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import com.mmo.loginserver.beans.PlayerData;
import com.mmo.loginserver.beans.Session;
import com.mmo.loginserver.implementation.ServiceException;
@WebService
@SOAPBinding(style=Style.DOCUMENT, parameterStyle=ParameterStyle.BARE)
public interface ILoginService
{
/* Authentifizierung */
@RequestWrapper(className="java.lang.String")
@ResponseWrapper(className="com.mmo.loginserver.beans.Session")
public Session login(String username, String password) throws ServiceException;
@RequestWrapper(className="com.mmo.loginserver.beans.Session")
public void logout(Session session) throws ServiceException;
@RequestWrapper(className="java.lang.String")
public void addAccount(String username, String password) throws ServiceException;
/* Abrufen von Spielerdaten */
@RequestWrapper(className="java.lang.String")
@ResponseWrapper(className="com.mmo.loginserver.beans.PlayerData")
public PlayerData getPlayerDataByName(String playerName) throws ServiceException;
@ResponseWrapper(className="com.mmo.loginserver.beans.PlayerData")
public PlayerData[] getPlayerData() throws ServiceException;
/* Statusabfragen */
@ResponseWrapper(className="java.lang.String")
public String getStatusAsXML() throws ServiceException;
@ResponseWrapper(className="java.lang.String")
public String getStatusAsHTML() throws ServiceException;
}
Java:
package com.mmo.loginserver.implementation;
import javax.jws.WebService;
import com.mmo.loginserver.beans.Account;
import com.mmo.loginserver.beans.PlayerData;
import com.mmo.loginserver.beans.Session;
import com.mmo.loginserver.interfaces.ILoginService;
@WebService(endpointInterface="com.mmo.loginserver.interfaces.ILoginService", serviceName="loginService")
public class LoginServiceImpl implements ILoginService
{
private HibernateFactory factory = null;
private DAOImpl daoImpl = null;
public LoginServiceImpl(HibernateFactory factory)
{
daoImpl = new DAOImpl(factory);
}
@Override
public Session login(String username, String password) throws ServiceException
{
try
{
String codedPassword = LoginServiceUtils.SHA1(password);
Account account = daoImpl.getAccountByUser(username);
if(account!=null)
{
if(account.getPassword().equals(codedPassword))
{
Account acc = (Account) account;
acc.setOnline(true);
daoImpl.updateAccount(acc);
Session session = daoImpl.createSession(account.getUsername());
return session;
} else
{
throw new ServiceException("Login failed! Username or Password was wrong!");
}
}
} catch(Exception e)
{
e.printStackTrace();
}
return null;
}
@Override
public void logout(Session session) throws ServiceException
{
Account acc = (Account) daoImpl.getAccountByUser(session.getUser());
acc.setOnline(false);
daoImpl.deleteSession(session);
daoImpl.updateAccount(acc);
}
@Override
public void addAccount(String username, String password) throws ServiceException
{
Account acc = daoImpl.getAccountByUser(username);
if(acc==null)
{
daoImpl.createAccount(username, password);
} else
{
throw new ServiceException("Accountname already in use.");
}
}
@Override
public PlayerData getPlayerDataByName(String playerName) throws ServiceException
{
return daoImpl.getPlayerDataByName(playerName);
}
@Override
public PlayerData[] getPlayerData() throws ServiceException
{
return daoImpl.getPlayerData();
}
@Override
public String getStatusAsXML() throws ServiceException
{
return "status=active";
}
@Override
public String getStatusAsHTML() throws ServiceException
{
return "status=active";
}
}