Erste server-Kontext Pfad beim starten der Anwendung
Ich versuche die server-URL (zB. http://www.mywebapp.com/myapp) aus dem ServletContext, wenn die Anwendung startet, ich Tue dies durch den Aufruf einer bean-Methode auf startup (mit @Startup) und das abrufen der servlet-Kontext,
@Startup
@Name("startupActions")
@Scope(ScopeType.APPLICATION)
public class StartupActionsBean implements StartupActions,
Serializable {
@Logger private Log log;
/**
*
*/
private static final long serialVersionUID = 1L;
@Create
@Override
public void create(){
ServletContext sc = org.jboss.seam.contexts.ServletLifecycle.getServletContext();
String context = sc.getContextPath();
String serverInfo = sc.getServerInfo();
log.debug("__________________START__________________");
log.debug("Context Path: "+context);
log.debug("Server Info: "+serverInfo);
}
//Cleanup methods
@Remove
@BypassInterceptors
@Override
public void cleanUp(){}
}
Dieser Arbeit ok, aber das ServletContext-Pfad leer ist, sieht die Ausgabe in der Konsole unten..
18:52:54,165 DEBUG [uk.co.app.actions.startup.StartupActionsBean] __________________START__________________
18:52:54,165 DEBUG [uk.co.app.actions.startup.StartupActionsBean] Context Path:
18:52:54,165 DEBUG [uk.co.app.actions.startup.StartupActionsBean] Server Info: JBoss Web/3.0.0-CR1
Weiß jemand, wie man den contextpath durch diese oder andere Mittel?
ps. Verwendung von SEAM 2.2.2, Jboss AS6-Finale, Richfaces 3.3.3
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden
@Startup
Ihre Komponente startup-code aufgerufen wird, bevor Kontexte sind vollständig eingerichtet und einige andere Fabriken könnte noch nicht initialisiert.Beachten Sie die
org.jboss.seam.postInitialization
Veranstaltung und die Verwendung der gleichenServletLifecycle.getCurrentServletContext()
auf die Daten, die benötigt werden. Ein kurzes Beispiel:getContextPath()
ist nur dann ok, wenn die Anwendung im root-Kontext. Die observer-Methode aufgerufen werden soll immer am Ende der Start-Prozess. Wenn es nicht, überprüfen Sie, dass die component-Klasse ist nicht in dersrc/hot
Ordner. Versuchen Sie auch, mit dercreate=true
option in der@Observer
annotation.run.sh -Dorg.jboss.seam.properties.config.url="http://www.mywebapp.com" -c default
und die Naht wird automatisch der Wert ging in dieurl
Eigenschaft einer Komponente namensconfig
(der Komponenten-und property-Namen sind bis zu Ihnen). Auf diese Weise können Sie das Start-Skript des live-setup ist anders, als die dev-setup.Haben Sie versucht, immer aus ExternalContext mit der getContextName Methode?