© Copyright International Business Machines Corporation 2006. Tutti i diritti riservati. Limitazioni previste per gli Utenti del Governo degli Stati Uniti - L'uso, la duplicazione o la divulgazione sono limitati dal GSA ADP Schedule Contract con la IBM® Corp.
Durante l'importazione di un progetto Portale di esempio oppure durante la creazione di progetto portale mediante l'utilizzo della procedura guidata "Nuovo progetto di portale" dalla Galleria di esempi,viene visualizzato un messaggio di avvertenza relativi ad un collegamento interrotto nella vista Problemi.
In questa versione di Rational® Developer, Portal Designer supporta solo i pannelli in HTML, cHTML e WML. Se sono state specificati altri linguaggi di markup supportati per una pagina o un etichetta in un progetto importato, tali linguaggi di markup sono supportati per la visualizzazione da parte di Rational Developer ma non possono essere modificati. Tali linguaggi di markup non verranno visualizzati nella vista Proprietà.
A meno che non si assegni una tavolozza colori a una pagina, viene utilizzata la tavolozza colori della pagina predefinita in WebSphere® Portal 6. Tuttavia, in Portal Designer, quando non viene specificata la tavolozza colori, viene utilizzata la tavolozza colori della pagina antenato al posto della tavolozza colori predefinita.
Nella procedura guidata Nuovo progetto portale, la selezione di una versione del server del portale non aggiorna automaticamente il runtime di destinazione. Occorre sincronizzare manualmente le impostazioni del runtime di destinazione e la versione del server del portale. Ad esempio, è necessario selezionare il runtime di WebSphere Portal v6.0 per una versione del server del portale 6.0.0.x e il runtime WebSphere Portal v5.1 per una versione del server del portale 5.1.0.x. Se la versione di runtime di destinazione non è sincronizzata con la versione del portale, è possibile che il server del portale si danneggi o diventi inutilizzabile durante la distribuzione del progetto del portale.
In WebSphere Portal v6.0, durante la modifica dei file JSP del tipo di contenuto CSS, quali styles.jsp o styles_theme.jspf, con la finestra di dialogo Stili, potrebbero essere visualizzate le espressioni JSP sulla finestra di dialogo. Tali espressioni JSP non possono essere modificate sulla finestra di dialogo, ma devono essere modificate nel pannello di origine del Designer CSS.
Per un portlet JSR168 Faces, se si utilizzano i seguenti strumenti per generare un client dei servizi in un JSP Faces, il codice di pagina generato non funzionerà correttamente su WebSphere Portal 6.0 o 5.1. Gli strumenti interessati includono:
- Vista Dati della pagina
- Java™ Bean (con richiamo del metodo)
- Servizio Web
- Bean di sessione EJB
- Vista tavolozza
- Java Bean (con richiamo del metodo)
- Servizio Web
- Bean di sessione EJB
- Inserisci -> Dati dal menu Finestre o dal menu di contesto Page Designer
- Java Bean (con richiamo del metodo)
- Servizio Web
- Bean di sessione EJB
Tale situazione è causata dalla nuova implementazione del runtime del portlet JSR168 Faces contenuto nel file jsf-portletbridge.jar, differente rispetto a prima.
Nella nuova implementazione, i bean pagecode per JSP Faces, quando vengono dichiarati come bean gestiti nell'ambito di richieste, non permangono tra la fase di rendering e la fase di azione del portlet. Nel codice client dei servizi Web generati, il bean pagecode viene utilizzato per memorizzare nella cache il risultato del servizio Web durante la fase di azione. Ma, poiché si trova nell'ambito della richiesta, viene creata una nuova istanza durante la fase di rendering. Di conseguenza, il risultato memorizzato nella cache andrà perso.
Esistono due possibili soluzioni:
- Inserire il bean nell'ambito della sessione (configurato nel file faces-config.xml). Tale operazione è semplice come la modifica di una riga nel file config.
- Non è semplice come l'esempio 1, ma è consigliabile per l'implementazione del client di servizi nei portlet JSR168. Segue le procedure ottimali della programmazione di portlet JSR168 e consente un migliore supporto del pulsante Indietro e dell'utilizzo di segnalibri.
- Se è necessario richiamare il servizi Web durante la fase di azione, ad esempio in base ai risultati del servizio, verrà esaminata una pagina di destinazione diversa, quindi è necessario modificare la modalità di memorizzazione del risultato nella cache. Anziché utilizzare una variabile locale nel bean pagecode, utilizzare il parametro di rendering o la sessione portlet. L'utilizzo dei parametri di rendering è il modo migliore per trasmettere le informazioni dalla fase di azione a quella di rendering, sebbene supporti solo valori String. Se il risultato è un tipo complesso, è necessario utilizzare invece la sessione del portlet.
- Di seguito viene riportato un frammento di codice per l'impostazione dei valori per i parametri di rendering dall'interno del metodo di azione JSF nel bean pagecode:
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("resultValue", resultValue);
- Di seguito viene riportato un frammento di codice per l'impostazione di valori per la sessione del portlet dall'interno del metodo di azione JSF nel bean pagecode:
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
request.getPortletSession().put("resultValue", resultValue);
- O, se si il richiamo del servizio durante la fase di rendering non è obbligatorio, è possibile rinviare il richiamo del servizio al metodo getter per il bean dei risultati del servizio Web. Nel metodo di azione JSF, inserire il valore di input in un parametro della richiesta di rendering se si tratta di una stringa o in una sessione del portlet se si tratta di un tipo complesso. Quindi, richiamarlo dal metodo getter per il bean dei risultati del servizio Web, in modo da poterlo utilizzare per richiamare il servizio.
- Di seguito viene riportato un frammento di codice per l'impostazione del valore di input in un parametro di rendering dall'interno del metodo di azione JSF nel bean pagecode:
PortletResponse response = (PortletResponse)getFacesContext().getExternalContext().getResponse();
((ActionResponse)response).setRenderParameter("inputValue", inputValue);
- Di seguito viene riportato un frammento di codice per il richiamo del valore di input nel metodo getter per il risultato:
PortletRequest request = (PortletRequest)getFacesContext().getExternalContext().getRequest();
String inputValue = request.getParameter("inputValue");
- Tenere presente che, l'utilizzo del parametro di rendering per trasmettere le informazioni alla fase di rendering presenta l'ulteriore vantaggio di un migliore supporto del pulsante Indietro del browser e dell'utilizzo di segnalibri.
Durante l'importazione di un progetto del portale, è possibile che venga visualizzata una casella del messaggio di richiesta: "I seguenti file dello spazio di lavoro non sono coerenti con l'editor. Aggiornare l'editor con il contenuto dello spazio di lavoro". Fare clic su Sì.
L'id app portlet è facoltativo in base alla specifica JSR 168, ma Rational® Developer non pubblica i portlet senza id in modo corretto. Rational Developer non genera portlet senza tali id. È possibile che un portlet venga creato se si importa un portlet da un'altra origine. Per ovviare a questo problema, aprire il descrittore di distribuzione portlet per il progetto e aggiungere un id applicazione portlet nella scheda di origine. Ad esempio:
<portlet-app xmlns=... version=... xmlns:xsi=... xsi:schemaLocation=... id="ENTER_YOUR_ID_HERE">
...
</portlet-app>
Se lo stato del server viene rilevato come Arrestato quando il server è in esecuzione, verificare innanzitutto che le porte del connettore SOAP/RMI siano corrette e che le credenziali di protezione WebSphere utilizzate siano appropriate nell'editor del server. In caso contrario, lo stato del server non verrà mai rilevato come Avviato. Se le credenziali sono corrette e lo stato del server rimane Arrestato, è possibile che vi sia un problema dovuto alla coesistenza di WebSphere Application Server v6.1 e WebSphere Portal v6.0.
Lo scenario più comune prevede il server WebSphere Application Server 6.1 installato sulla macchina locale e avviato con un nuovo spazio di lavoro. In tale spazio di lavoro, un'istanza di WebSphere Application Server 6.1 verrà creata e inizializzata automaticamente e ciò impedirà il corretto funzionamento della rilevazione dello stato di Portal 6.0. È inoltre possibile che ciò si verifichi se si crea WebSphere Application Server v6.1 e quindi si crea un server Portal 6.0.
La soluzione è riavviare il prodotto Rational con lo stesso spazio di lavoro. L'istanza del server Portal 6.0 dovrebbe quindi funzionare correttamente finché non viene inizializzato WebSphere Application Server 6.1, ossia lo stato di tale server rimane vuoto anziché Arrestato o Avviato.
I portlet non vengono visualizzati nelle pagine dopo l'esecuzione o la distribuzione del progetto My portal in Portal 6.0. Per ridurre al minimo l'effetto di tale problema, utilizzare la distribuzione di sola configurazione quando la distribuzione completa non è necessaria.
Se si individua un problema, eseguire una distribuzione di sola configurazione del progetto del portale, senza distribuire alcun portlet. Ciò generalmente consente al portale di eseguire di nuovo il rendering dei portlet correttamente.
Se si sta creando un messaggio del processo business e il file WSDL è nello stile Document-Literal, è possibile che i nomi dei messaggi di input e di output non vengano visualizzati nella seconda pagina della procedura guidata. È comunque possibile selezionarli e visualizzare i dettagli del messaggio nel lato destro della procedura guidata. Il codice generato verrà corretto nonostante i nomi messaggio non vengano visualizzati nella procedura guidata.
Se si utilizza la procedura guidata collaborativa per creare portlet di origine e di destinazione e il progetto portlet JSR 168 contiene più tipi di portlet, ad esempio uno di base e uno struts, è possibile che il parametro di azione predefinito nella procedura guidata non sia corretto.
Nei portlet faces e di base, il parametro di azione predefinito deve essere ACTION_NAME_PARAM, ma l'utente può selezionare un valore diverso.
In struts, il parametro di azione deve essere spf_strutsAction.
Questi sono i valori predefiniti per il nome univoco nei contenitori della pagina di attività
WebSphere Portal v6.0: ibm.portal.MyTasks
WebSphere Portal v5.1: wps.MyTasksIn Portal Designer, quando si utilizza un'altra pagina con un nome univoco diverso rispetto a quelli elencati in precedenza, la pagina non viene riconosciuta come pagina del contenitore della pagina attività in WebSphere Portal dopo la distribuzione.
Soluzione temporanea: dopo la distribuzione, modificare il valore del parametro TaskPageContainerUniqueName nel portlet My Tasks utilizzando la seguente procedura:
1. Aprire Amministrazione > Gestione portlet > Portlet
2. Per il portlet My Tasks, fare clic sul pulsante Configura portlet
3. Per il parametro TaskPageContainerUniqueName, fare clic su Modifica.
4. Modificare il valore nel nuovo nome univoco in Portal Designer utilizzando i seguenti valori:WebSphere Portal v6.0: ibm.portal.MyTasks
WebSphere Portal v5.1: wps.MyTasks
5. Fare clic su OK.
Se un progetto del portale viene migrato da Rational Developer 6.x nello spazio di lavoro Rational Developer 7.0, potrebbero verificarsi errori di distribuzione con una NoModuleFileException. In tal caso, seguire la procedura riportata in basso per risolvere il problema.
- Tale procedura presuppone che sia già stato generato un progetto EAR "wps" EAR dall'operazione di distribuzione del progetto del portale in errore.
- Aprire il file application.xml nel progetto EAR wps appena generato.
- Verificare che il contenuto del file application.xml sia simile al seguente:
<module id="WebModule_1163447032109">
<web>
<web-uri>wps.war</web-uri>
<context-root>wps</context-root>
</web>
</module>
<module id="WebModule_WSRP">
<web>
<web-uri>wps_facade.war</web-uri>
<context-root>/wsrp</context-root>
</web>
</module>
<module id="EjbModule_1">
<ejb>wp.scheduler.ejb.jar</ejb>
</module>
<security-role id="SecurityRole_1">
<description>Everyone in the enterprise.</description>
<role-name>Everyone Role</role-name>
</security-role>
<security-role id="SecurityRole_2">
<description>All Authenticated users in the enterprise.</description>
<role-name>All Role</role-name>
</security-role>
<security-role id="SecurityRole_3">
<description>No users in the enterprise.</description>
<role-name>No Role</role-name>
</security-role>
- In modo più specifico, il contenuto deve rispettare le seguenti regole:
- Contenere una definizione del modulo Web per wps.war con il valore content-root impostato su "wps".
- Non contenere più di una definizione del modulo Web con il valore content-root impostato su "wps".
- Contenere una definizione del modulo Web per wps_facade.war con il valore content-root impostato su "wprs.
- Contenere una definizione del modulo ejb per wp.scheduler.ejb.jar.
- Contenere definizioni del ruolo di protezione per "Everyone Role", "All Role" e "No Role".
- Salvare ed eseguire di nuovo la pubblicazione.
A causa di una versione non aggiornata del file jsf-ibm.jar fornito in WebSphere Portal 6.0, alcuni componenti JSF non eseguono il rendering corretto nei portlet se la modalità del programma di caricamento classi è impostata su PARENT_FIRST nel modulo Web del portlet. Ciò avviene perché quando la suddetta modalità è impostata su PARENT_FIRST, il file jsf-ibm.jar in WebSphere Portal 6.0 verrà utilizzato al posto della copia contenuta nel modulo Web del portlet.
Solo i componenti presenti nel file jsf-ibm.jar, che corrispondono all'URI http://www.ibm.com/jsf/html_extended, vengono interessati. Entrambi i portlet Faces IBM e Faces JSR168 vengono influenzati.
La modalità del programma di caricamento classi del modulo Web del portlet verrà impostata su PARENT_FIRST nelle seguenti situazioni e di conseguenza potrebbe essere necessario modificarla:
Per ovviare a questo problema, aprire il file application.xml nel progetto EAR contenente il progetto del portlet e quindi aprire la scheda "Distribuzione". Nella sezione "Applicazione", individuare la struttura ad albero che visualizza l'EAR e il progetto portlet. Selezionare il progetto portlet e modificare la "modalità del programma di caricamento classi" da "PARENT_FIRST" a "PARENT_LAST". Potrebbe essere necessario pubblicare l'applicazione nuovamente per rendere effettiva la modifica sul server di destinazione.
- Quando il portlet viene distribuito da Rational Developer v7.
- Quando il portlet è installato prima in WebSphere Application Server utilizzando EAR e poi configurato in WebSphere Portal utilizzando il comando xmlAccess.
Se il portlet è installato direttamente in WebSphere Portal utilizzando il WAR, nella pagina di gestione di WebSphere Portal o utilizzando il comando xmlAccess, la modalità del programma di caricamento classi è già impostata su PARENT_LAST. In questo caso, il portlet funzionerà correttamente senza soluzioni alternative.
Quando un progetto del portale 5.1.0.1 creato utilizzando Rational Developer 6.x viene importato con Project Interchange in uno spazio di lavoro Rational Developer 7.0, è possibile che l'"esecuzione in un ambiente di test WebSphere Portal v5.1" abbia esito negativo.
Soluzione temporanea: modificare il contenuto del file .portalsettings utilizzando la seguente procedura:
1. Aprire Finestra > Apri prospettiva > Altro... .
2. Selezionare Risorsa e fare clic su OK nella finestra di dialogo Apri prospettiva.
3. Espandere il progetto del portale nella vista Navigator.
4. Selezionare il file .portalsettings e aprirlo con un editor di testo.
5. Inserire quanto segue:
<?xml version="1.0" encoding="UTF-8"?>
<portalSettings>
<portal-version version="5.1.0.1"/>
<portlets-ear-project portlets-ear-project-name=""/>
<process-integration mytaskspage-uniquename="wps.MyTasks"/>
</portalSettings>
Occorre attivare la funzione "Web Developer (avanzata) per visualizzare la procedura guidata di importazione portale e il portale e i relativi esempi nella galleria di esempi. Per abilitare la funzione, andare in Guida > Benvenuti, fare clic sul pulsante "Abilita ruoli" che si trova nell'angolo della schermata. Quindi selezionare il ruolo "Web Developer (avanzato)" per attivarlo. Riavviare la procedura guidata o la galleria di esempi per rendere effettive le modifiche.