D
Ja aber Hallo...
Alsoo, ich habe eine relativ kleine Anwendung die per Order-Di-Mufti eine Java EE-Anwendung werden soll.
Zwar hatte ich mal einen JavaEE-Kurs, das bedeutet aber nicht, dass ich mehr weiß, als wie man beans baut und in den jBoss plumpsen lässt.
Ich möchte nun aber nicht jede Unterseite einzeln verdrahten. Vielmehr denke ich mir ein System, welches über eine Session Facade und/oder Business Delegate die Webseiten generiert.
Ich habe mir ein einfaches Proxy-Servlet (als Facade) geschrieben, welches lokale Artefakte ansprechen kann. Leider funktioniert dies nur so lange, bis die Session und der Login (welcher über die jBoss-Security realisiert werden soll) ins Spiel kommen.
Hier funktioniert dann gar nichts mehr. Meine Loginmaske wird dann nicht mehr dargestellt..
hier mal der Servlet-Code
/**
* Servlet implementation class Main
*/
public class Main extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Main() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* lies das aufzurufende Element aus
*/
String function = "index.jsp";
if ( request.getAttribute("f") != null) {
function = request.getAttribute("f").toString();
System.out.println(">>>>> " + function);
}
/*
* erstelle den Proxy-Request
*/
String proxied = "http://localhost:"+request.getServerPort()+"/" + request.getContextPath() +"/"+ function;
/*
* erstelle eine Http-Connection
*/
URL proxURL = new URL(proxied);
HttpURLConnection connection = (HttpURLConnection)proxURL.openConnection();
connection.setDoOutput(true);
/*
* kopiere Requestdaten (get data)
*/
Enumeration e = request.getHeaderNames();
while (e.hasMoreElements()) {
String headerName = e.nextElement().toString();
connection.setRequestProperty(headerName, request.getHeader(headerName));
}
/*
* verbinde
*/
connection.connect();
/*
* kopiere Post-Daten
*/
copyStream(request.getInputStream(), connection.getOutputStream());
/*
* sende Response-Code
*/
int status = connection.getResponseCode();
response.setStatus(status);
/*
* kopiere response header
*/
Iterator it = connection.getHeaderFields().entrySet().iterator();
while (it.hasNext()) {
Map.Entry mapEntry = (Map.Entry) it.next();
if (mapEntry.getKey() != null) {
response.setHeader(mapEntry.getKey().toString(), ((List)mapEntry.getValue()).get(0).toString());
}
}
/*
* Kopiere Antwortdaten
*/
copyStream(connection.getInputStream(), response.getOutputStream());
/*
* disconnect
*/
connection.disconnect();
}
/**
* @param source
* @param destination
* @throws IOException
*/
private void copyStream(InputStream source,
OutputStream destination) throws IOException {
/*
* kopiere post data
*/
BufferedInputStream instream = new BufferedInputStream(source);
BufferedOutputStream outstream = new BufferedOutputStream(destination);
int d;
while ((d = instream.read()) != -1) {
outstream.write(d);
}
outstream.flush();
outstream.close();
instream.close();
}
}
Hat jemand eine Idee oder vielleicht auch ein paar Brocken Code, wie ich so etwas realisieren kann?