tag:blogger.com,1999:blog-33919820021632971942024-02-19T10:55:28.681+01:00Black Forest CoderVarious posts on Java and eclipse, SharePoint, C# and .Net.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-3391982002163297194.post-81666613988382308982013-02-20T15:28:00.000+01:002013-02-20T15:39:01.326+01:00Getting started with Hudson Continuous IntegrationThis documents my first attempt to use Hudson for building preview and release versions of a .Net ClickOnce application. The version control system is CVS.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h2>
Install Hudson</h2>
<div class="separator" style="clear: both; text-align: center;">
</div>
Download Hudson from <a href="http://eclipse.org/hudson">eclipse.org/hudson</a> (currently 3.0)<br />
<br />
Install a cvs client e.g. cvsnt<br />
<br />
Drop the war file in tomcat (I'm using v7)<br />
<br />
Add 'set "HUDSON_HOME=d:\HUDSON"' to tomcat's startup.bat. This is where all the build configurations and workspaces are saved so there needs to be enough space.<br />
<br />
Start Hudson and install the recommended plugins<br />
<br />
Install plugins: Manage Hudson->Plugins. Need MSBuild, CVS, CVS-Tag<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEL1DIctrCwEESu-SbmW4AcYNap3hr75FlLaMm6D6sKwF2_khxmK2K-Xt6QCrAW4ovdnJqxHNtC7zrUMNC-7QhYZaZiEnpOum6XhSWyAxQFbpl218rVHeQlsmQ6kZggitAwXqVDeI5whY/s1600/b4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="582" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEL1DIctrCwEESu-SbmW4AcYNap3hr75FlLaMm6D6sKwF2_khxmK2K-Xt6QCrAW4ovdnJqxHNtC7zrUMNC-7QhYZaZiEnpOum6XhSWyAxQFbpl218rVHeQlsmQ6kZggitAwXqVDeI5whY/s640/b4.jpg" width="640" /></a></div>
<br />
<h2>
Configure Hudson</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIbsTKilhiVibazGhrX20OgS9LwDCmjOKnDE-gEk5zFSOBiZi9mnwL8Wi-wbT078CGjr13lNXEaplfkUxyoI58-7Ap_ZwmJnm5dnYyX51aLG47s5UR49uMvxQnfkcO3_Xizk4ECZ6P6lg/s1600/b1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIbsTKilhiVibazGhrX20OgS9LwDCmjOKnDE-gEk5zFSOBiZi9mnwL8Wi-wbT078CGjr13lNXEaplfkUxyoI58-7Ap_ZwmJnm5dnYyX51aLG47s5UR49uMvxQnfkcO3_Xizk4ECZ6P6lg/s1600/b1.jpg" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjphFv-Alr5gEO6q7Y-bfOQlQtf3RUGX6koxhqEifxiHALBzKJdUkbhB44tfutIBtNr3Z-z4OAHNoD9oKsBodnstIRtsLZtVk93sNa9dosHYiQFJu8abvvz5y8X-s2EQMtkyN_9KRcpc4/s1600/b2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjphFv-Alr5gEO6q7Y-bfOQlQtf3RUGX6koxhqEifxiHALBzKJdUkbhB44tfutIBtNr3Z-z4OAHNoD9oKsBodnstIRtsLZtVk93sNa9dosHYiQFJu8abvvz5y8X-s2EQMtkyN_9KRcpc4/s1600/b2.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheRHITerfAejuhSuIWeShUL3uUhjKu1fOP5MkR6OhImD57lzEusTfWPLo9hjStdqLvREQCgvj5nMXIWtsUkPo_9o0TRX6bFqD-NN8s6nuqz5iJJYFKAexmkexI2lE7ErZVZn-HcfgiOdg/s1600/b3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheRHITerfAejuhSuIWeShUL3uUhjKu1fOP5MkR6OhImD57lzEusTfWPLo9hjStdqLvREQCgvj5nMXIWtsUkPo_9o0TRX6bFqD-NN8s6nuqz5iJJYFKAexmkexI2lE7ErZVZn-HcfgiOdg/s1600/b3.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h2>
Create a job</h2>
<div>
My approach is to debug and test the application locally. Only when I want to create a preview/stage or production version do I need Hudson. Hudson should do a build and publish. When successful, a new CVS tag should be created.</div>
<div>
<br /></div>
<div>
The following job settings do not contain any deploy location information (stage/prod). The job always publishes to a temp location on D:. I want to change this later.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVJlWRenfJX2pi0UH8gGcBVRGd0jdTUX0q9oCFDGBpvsWl1vTvORd8y67jJbml5p0HCTh2fnxuB4C1OZ4OFPxIU7UBO9AMgMABN5FMef_mHxA1H-l8pJzVQNe3EDIeuV-1A6gvjoLOtoU/s1600/bx.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVJlWRenfJX2pi0UH8gGcBVRGd0jdTUX0q9oCFDGBpvsWl1vTvORd8y67jJbml5p0HCTh2fnxuB4C1OZ4OFPxIU7UBO9AMgMABN5FMef_mHxA1H-l8pJzVQNe3EDIeuV-1A6gvjoLOtoU/s1600/bx.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMgSj7EeXeojZzrWKNtwZZFRazcmamSyrdHSI2yNcHxVpsdnplZRkKHMwv_xMOa-_zH3ByaMwCj0UaqoUX2U3HNIVH-YAFJmrPUucw0MTzna8jy1GqGxJiXBUUunQXLgivCieqHNZByE/s1600/c2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMgSj7EeXeojZzrWKNtwZZFRazcmamSyrdHSI2yNcHxVpsdnplZRkKHMwv_xMOa-_zH3ByaMwCj0UaqoUX2U3HNIVH-YAFJmrPUucw0MTzna8jy1GqGxJiXBUUunQXLgivCieqHNZByE/s1600/c2.jpg" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr1EBRA2yA5XvsA5ZxYnLHizYTumFEJzkxqywqzFyjmIT9Pw4R_7pYAmEVydHdtgmItRBGGfZbDd_zvAjRYJFRAHkLHFXgn4-I5zSc-uetdfLnwuUXHP2_r4HAU7ymb-MdVzsbHFPOYRw/s1600/c3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr1EBRA2yA5XvsA5ZxYnLHizYTumFEJzkxqywqzFyjmIT9Pw4R_7pYAmEVydHdtgmItRBGGfZbDd_zvAjRYJFRAHkLHFXgn4-I5zSc-uetdfLnwuUXHP2_r4HAU7ymb-MdVzsbHFPOYRw/s1600/c3.jpg" /></a></div>
<br />
<br />
<div>
<br /></div>
paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0Loßburg, Germany48.4111495 8.449142800000004248.242445000000004 8.1264193000000038 48.579854 8.7718663000000046tag:blogger.com,1999:blog-3391982002163297194.post-61292182722615280562012-08-01T12:44:00.001+02:002012-08-02T11:28:23.948+02:00Using a connection profile store with BIRTAfter a bit of trial-and-error I managed to get connection profiles to work with BIRT. It is important to keep to the following sequence.<br />
<br />
<ul>
<li>Open the Data Source Explorer view</li>
<li>Create all the connection profiles you need. e.g. test, staging and production for each connection type. Give them names which indicate the environment they are in (MS_SQL_Test, MS_SQL_Prod etc.)</li>
<li>Export the required connection profiles to a file in the report project e.g. connectionStore.xml</li>
<li>In the report project, create a new DataSource and select the second radio button 'Create from a connection profile in the profile store'</li>
<li>Select the profile store file and choose a connection profile. Perhaps deselect the 'Use default data source name' and enter a environment-independant name (e.g. MS_SQL instead of MS_SQL_Test). Choose Ok to end</li>
<li>Open the Data Source and select 'Property Binding'</li>
<li>Edit 'Connection Profile Name' -- <span style="font-size: x-small;"></span><span style="font-size: small;">params[<span style="color: #2a00ff;"><span style="color: #2a00ff;">"__runtime"</span></span>].value.toLowerCase() == <span style="color: #2a00ff;"><span style="color: #2a00ff;">'prod'</span></span> ? <span style="color: #2a00ff;"><span style="color: #2a00ff;">'MS SQL Prod'</span></span> : <span style="color: #2a00ff;"><span style="color: #2a00ff;">'MS SQL Test' </span></span><span style="color: black;">-- or something similar. The returned value must correspond to the name of a connection profile in the store.</span></span></li>
<li><span style="color: black;">Define a parameter named '__runtime' and use the Combo Box option to set the valid values: 'test', 'prod' etc</span></li>
<li>That's it</li>
</ul>
You should now be able to select the connection environment using the report parameter.
<br />
<strong>Update</strong><br />
When I deployed this to the server (websphere) the profile switching between prod & test did not work. This was because the profile store was not being found. Unfortunately, there is no error message - it just takes the default connection settings. The connection store needs to be placed in the server's context root.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-45528221389587903952012-03-16T10:16:00.000+01:002012-03-16T10:16:50.490+01:00Success with pvc.webcontainerFinally got my little app working with com.ibm.pvc.webcontainer. I installed the Domino upgrade 8.5.3 and my plugin works! Seems there were problems with 8.5.2.<br />
<br />
One important point is to refresh the target definition in eclipse: Window->Prefs->Plug-in Dev->Target. Reload. Otherwise there will be unresolved plugins in the projects.<br />
<br />
<br />paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-52224300181396131482011-09-12T12:53:00.000+02:002011-09-12T12:53:08.036+02:00OpenJPA as an OSGi bundle<a href="http://hwellmann.blogspot.com/2010/09/openjpa-and-osgi.html">http://hwellmann.blogspot.com/2010/09/openjpa-and-osgi.html</a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-72568521482607744392011-09-06T14:35:00.000+02:002011-09-06T14:35:48.018+02:00Create bundles for non-OSGi componentsThis is in German but looks helpful. <a href="http://oli.blogger.de/stories/1864695/">http://oli.blogger.de/stories/1864695/</a><br />
<br />
I'll do a write-up in English when I've tried it out.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-54516634564692187842011-06-15T10:35:00.000+02:002011-06-15T10:41:02.063+02:00Mixing Linq-to-SQL and Linq-to-XMlI have been trying to select a column containing XML text from a database and then selecting nodes from the XML using Linq. It didn't work. My guess is that deferred execution causes the queries to be mixed and taken as Linq-to-SQL. As a result the XML stuff causes problems.<br />
<br />
My solution was to force an intermediate result so that there is a break between SQL and XML queries. My code for LinqPad is as follows.<br />
<br />
<pre>var all = from bm in mytable
select new { name=bm.SPP_USER_ID, xml=(string)bm.SPP_BOOKMARKS_XML};
var docs = from x in all
select XDocument.Parse(x.xml);
var docs2 = docs.ToList(); // FORCE RESULT
XNamespace ns = "http://acme/bookmarks";
var href = from h in docs2.Descendants(ns + "href")
select h.Value;
</pre>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-14728371408103720892011-04-15T12:55:00.000+02:002011-04-15T12:55:32.675+02:00Strange and annoying problem with {NOBR}I wrote a web app about 10 years ago which used Javascript to pop up a hidden table when an input field gets focus. Each cell in the table contains a checkbox and text which are surrounded by a NOBR to keep them together.<br />
<br />
Recently users with IE8 complained that the first cell is not visible when the table pops up. After MUCH trial and error I narrowed it down to the NOBR tag. I replaced it with a SPAN with style set to white-space : nowrap and this seems to solve the problem :-/paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-16723416334652813582011-04-05T15:43:00.000+02:002011-04-05T15:43:35.028+02:00Using 3rd party libraries in SilverlightI downloaded a 3rd party library for a Silverlight app I am writing. When I ran the app I got an error message telling me to add <br />
<br />
<loadFromRemoteSources enabled="true"/><br />
<br />
to 'devenv.exe.config' (Usually in 'C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE').<br />
<br />
It seems you also need to edit the 'Blocked' property of the DLL.<br />
<br />
See <a href="http://msdn.microsoft.com/en-us/library/ee890038.aspx">How to: Use an Assembly from the Web in Visual Studio</a> for full details.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-27326126424707240302011-03-23T14:07:00.001+01:002011-03-23T14:07:57.028+01:00Adding commands for menuitems in WPF<a href="http://social.msdn.microsoft.com/Forums/en/wpf/thread/d93003e9-45e4-4b3d-a1af-45af92f1ef48">http://social.msdn.microsoft.com/Forums/en/wpf/thread/d93003e9-45e4-4b3d-a1af-45af92f1ef48</a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-72086611834193187482011-03-10T11:01:00.000+01:002011-03-10T15:35:45.535+01:00RAP + BIRT on WebsphereI used the blog from Tim Pietrusky to get started: <a href="http://blog.tim-pietrusky.de/2009/rich-ajax-platform-rap/integrating-birt-into-rap-applications/">http://blog.tim-pietrusky.de/2009/rich-ajax-platform-rap/integrating-birt-into-rap-applications/</a><br />
<br />
Perhaps I did something wrong but all the image links in the resulting HTML were broken. The URL to my dynamically-generated images was invalid. Even the examples from the RAP wiki showed the same problem.<br />
<br />
In the end I decided to store my images under /rwt-resources/birt as I noticed that all the images from RWT are loaded from this address. I also changed the URL to use a context-relative address and not a fully-defined URL with host and port. On Websphere the result was an IP address and the port of the AppServer which was not accessible directly from the client.<br />
<br />
I set the resources extension point as follows:<br />
<br />
<code><extension point="org.eclipse.equinox.http.registry.resources"><br />
<resource<br />
alias="/resources/birt"<br />
base-name="/rwt-resources/birt"><br />
</resource><br />
</extension></code><br />
<br />
<span style="color: black; font-family: inherit; font-size: small;">The modified View part looks like this (sorry about the formatting):</span><br />
<br />
<code><br />
public class ChartView extends ViewPart {<br />
public static final String ID = "com.acme.fair.views.ChartView";<br />
<br />
private static final String reportName = "simplechart.rptdesign";<br />
private static final String reportDirLocal = "/resources/birt/";<br />
private static final String reportDirServer = "/rwt-resources/birt/";<br />
<br />
private Browser browser;<br />
private String reportDesign; // Full path to the local BIRT report file<br />
private String URL;<br />
<br />
private IReportEngine engine = null;<br />
private EngineConfig config = null;<br />
private IReportRunnable design = null;<br />
private IRunAndRenderTask task;<br />
<br />
@SuppressWarnings("restriction")<br />
public void createPartControl(Composite parent) {<br />
this.setPartName("BIRT in RAP");<br />
browser = new Browser(parent, SWT.NONE);<br />
configureURL();<br />
<br />
try {<br />
config = new EngineConfig();<br />
IReportEngineFactory factory = (IReportEngineFactory) Platform<br />
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);<br />
engine = factory.createReportEngine(config);<br />
<br />
InputStream fs = null;<br />
try {<br />
URL url = Activator.getDefault().getBundle().getResource("/resources/birt/simplechart.rptdesign");<br />
fs = url.openStream();<br />
} catch (MalformedURLException ex) {<br />
ex.printStackTrace();<br />
} catch (IOException ex) {<br />
ex.printStackTrace();<br />
}<br />
<br />
design = engine.openReportDesign(fs);<br />
<br />
// Create task to run and render the report<br />
task = engine.createRunAndRenderTask(design);<br />
<br />
// Set the dataset for the chart as report parameter<br />
task.setParameterValue("CHART_DATASET", MesseSql.getFairsPerYear());<br />
<br />
// Render the report to HTML<br />
HTMLRenderOption renderOptions = new HTMLRenderOption();<br />
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();<br />
renderOptions.setOutputFormat(HTMLRenderOption.HTML);<br />
renderOptions.setOutputStream(outputStream);<br />
<br />
// Get the path to the local context directory to save the rendered<br />
// chart image<br />
String webAppBase = (ContextProvider.getWebAppBase()).replaceAll("\\\\", "/");<br />
String path = webAppBase + reportDirServer + RWT.getSessionStore().getId();<br />
<br />
// Handle the image path<br />
renderOptions.setImageHandler(new HTMLServerImageHandler());<br />
renderOptions.setImageDirectory(path);<br />
renderOptions.setBaseImageURL(RWT.getRequest().getContextPath() + reportDirServer + RWT.getSessionStore().getId());<br />
<br />
task.setRenderOption(renderOptions);<br />
task.run();<br />
task.close();<br />
<br />
// Set the HTML output to the Browser widget<br />
browser.setText(outputStream.toString());<br />
<br />
engine.destroy();<br />
<br />
} catch (Exception ex) {<br />
ex.printStackTrace();<br />
}<br />
}<br />
<br />
// Set the URL for the BIRT report for different environments.<br />
private void configureURL() {<br />
<br />
// Protocol, ip & port<br />
ServletContext sc = RWT.getRequest().getSession().getServletContext();<br />
String realPath = sc.getRealPath("/");<br />
HttpServletRequest request = RWT.getRequest();<br />
String protocol = "http://";<br />
String ip = request.getLocalAddr();<br />
int port = request.getLocalPort();<br />
URL = protocol + ip + ":" + port;<br />
String webAppName = "";<br />
<br />
if (realPath == null) { // Start application locally within Eclipse<br />
// (Windows)<br />
reportDesign = URL + reportDirLocal + reportName;<br />
} else { // Start application on a server (Apache Tomcat or so)<br />
webAppName = sc.getContextPath();<br />
reportDesign = URL + webAppName + reportDirLocal + reportName;<br />
URL = URL + webAppName;<br />
}<br />
}<br />
<br />
public void setFocus() {<br />
}<br />
<br />
/**<br />
* Execute the given script, for example to print the <br />
<br />
* content of the <code>Browser</code><br />
* <br />
* @param script<br />
* String to be executed<br />
*/<br />
public void executeScript(String script) {<br />
browser.execute(script);<br />
}<br />
}</code>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-22433314379062000262011-02-11T09:04:00.000+01:002011-08-29T14:18:29.492+02:00RAP: Useful snippetsJust want to record some handy code snippets...<br />
<br />
<strong><u>Save/Restore workbench state</u></strong><br />
<br />
In the Application WorkbenchAdvisor<br />
<br />
<span style="font-size: x-small;"></span><span style="font-size: x-small;"></span><br />
<div align="left"></div><div align="left"><span style="color: black; font-family: "Courier New", Courier, monospace;">/**</span><br />
<span style="font-size: x-small;"></span><span style="color: black; font-family: "Courier New", Courier, monospace;">* set auto restore of workbench state</span></div><div align="left"><span style="color: black; font-family: "Courier New", Courier, monospace;">*/</span></div><br />
<div align="left"><span style="color: black; font-family: "Courier New", Courier, monospace;">public void initialize( IWorkbenchConfigurer configurer ) {<br />
getWorkbenchConfigurer().setSaveAndRestore( true );<br />
super.initialize( configurer );<br />
}</span></div>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com2tag:blogger.com,1999:blog-3391982002163297194.post-91053305702484759842011-02-10T15:10:00.000+01:002011-02-10T15:10:32.334+01:00RAP: App suddenly stopped workingI edited the Preference feature in my app and could not start the app. I was getting the following error:<br />
<br />
java.lang.IllegalArgumentException: no layout registered with default id (LayoutRegistry.DEFAULT_LAYOUT_ID) or no layout activated over branding extension.<br />
at org.eclipse.rap.ui.interactiondesign.layout.ElementBuilder.<init>(ElementBuilder.java:96)<br />
at org.eclipse.rap.internal.design.example.builder.DummyBuilder.<init>(DummyBuilder.java:23)<br />
at org.eclipse.rap.internal.design.example.managers.CoolBarManager.<init>(CoolBarManager.java:140)<br />
Turns out that the cookies have got themselves in a muddle and need to be deleted. I don't like to delete all my cookies so I (in IE8) opened Tools -> Internet options -> Browsing history -> Settings -> View files. This shows all the temp files. I sorted by last changed date and deleted the files which looked like <a href="mailto:'Cookie@127.0.0.1'">'Cookie@127.0.0.1'</a><br />
<br />
Then it all worked again.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-85165186877216067012011-02-09T15:41:00.000+01:002011-02-14T10:32:01.036+01:00RAP: First deploy to WebSphereIt didn't work first time but it didn't take too long to get the first results. This is what I did. <br />
<br />
<ul><li>Ensure RAP WAR Products feature installed -- <a href="http://wiki.eclipse.org/RAP/Equinox_WAR_products">http://wiki.eclipse.org/RAP/Equinox_WAR_products</a></li>
<li>Create a new WAR Product Configuration in the plugin project. New -> Other... -> Plugin Development</li>
<div class="separator" style="clear: both; text-align: center;"></div><li>Select parent folder, name the product and choose the lauch configuration</li>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXYx8Iez-hGv34QIsXeR06udHbfLGjbFOg11OQ6SzHxnQ2OAcN6EOsw8accGEcTEIvc-o1peSoTowD_fgnNZvYX42aAM8bvQOk8L0vC7-h6qIoMHYBRFSgjEfk76s50LjSwEdo0Y39EhI/s1600/deploy1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" h5="true" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXYx8Iez-hGv34QIsXeR06udHbfLGjbFOg11OQ6SzHxnQ2OAcN6EOsw8accGEcTEIvc-o1peSoTowD_fgnNZvYX42aAM8bvQOk8L0vC7-h6qIoMHYBRFSgjEfk76s50LjSwEdo0Y39EhI/s320/deploy1.png" width="258" /></a></div><li>Open the WAR product file and enter an ID and Name</li>
<li>On the configuration page add the JARs used by the project </li>
<li>Return to the Overview page and select Validate</li>
<li>If necessary, add the missing plugins or JARs</li>
<li>Start the export wizard and enter the name of the output file. Press Finish.</li>
<li>The WAR file has now been exported</li>
<li>Open the Websphere Integrated Solutions Console </li>
<li>Create new Application Server. I called it RAP_TEST.</li>
<li>I had to modify a few ports because the defaults clashed with other App Servers</li>
<li>Install new Enterprise Application and enter the name of the WAR file</li>
<li></li>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSojMi2oHKnBSWXcCE8wAsetxZohnybhtTUF7FXtNCbq0bPksRThajTf6rpxongm25Xqjo0f8h1PWrUBwPAS8jcd9Ihw4i3qzQmoUh3f-kLsAFULt2QIVaH8xvEmyeqojInd668IRAat4/s1600/deploy2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" h5="true" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSojMi2oHKnBSWXcCE8wAsetxZohnybhtTUF7FXtNCbq0bPksRThajTf6rpxongm25Xqjo0f8h1PWrUBwPAS8jcd9Ihw4i3qzQmoUh3f-kLsAFULt2QIVaH8xvEmyeqojInd668IRAat4/s320/deploy2.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWKx9GaapfmxVCoOLSvI6t80QUuDY_NIV5y4G008dve__36v_QZwqOyUJZGyv_CLoFHfvPuho03bDgnvIUDmuD_5itGPFyAkRnFI3HiSdoD2iTJxAra-gWZ3VMBdhnJtB06joYCK4xN4o/s1600/deploy3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" h5="true" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWKx9GaapfmxVCoOLSvI6t80QUuDY_NIV5y4G008dve__36v_QZwqOyUJZGyv_CLoFHfvPuho03bDgnvIUDmuD_5itGPFyAkRnFI3HiSdoD2iTJxAra-gWZ3VMBdhnJtB06joYCK4xN4o/s320/deploy3.png" width="320" /></a></div><li>Accept all defaults and enter a context root such as /apps/rap</li>
<li>Finish</li>
<li>Might need to sync nodes etc but should now work</li>
<li><servername>/apps/rap/fair?startup=fair (in my case)</li>
</ul>So, my app kind of works. Unfortunately, the whole branding is missing so there are no images, styles etc. When I find the cause, I'll post more here.<br />
<br />
<strong>Missing images problem</strong><br />
<br />
<span style="font-family: inherit;">I set up a simple Tomcat server to check that it wasn't a WAS problem. I then noticed that there was an exception in the logs. Something to do with Jetty and an 'Address already in use' bind error. I was surprised that Jetty would be active on the Tomcat server so I checked my plugin dependencies. In the end I removed all the dependencies and added the 'Required plugins'. That seemed to cure the problem. After redeploying, there were no Jetty exceptions and I get the images which were missing.</span>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-25066195796649609752011-02-08T09:58:00.000+01:002011-02-09T10:31:30.839+01:00Strangeness(?) with RAP i18n<span style="font-family: inherit;"><span class="MsgBodyText">Just made my first attempt to add multi-language support to my RAP app. I created a default bundle for English and then one for German.<br />
<br />
messages.properties<br />
messages_de.properties<br />
<br />
My browser was setup to accept German and English in that order so I got the German texts. I then swapped the language prefs in the browser to put English first but I still got German. I tried closing the browser, restarting the app etc. but I still got German. Finally, I added a new bundle, messages_en.properties and now I get English.<br />
<br />
Is this the correct behaviour? It is not what I expected but I guess nothing is known about the default bundle and the browser is saying that German is acceptable (if not preffered), Hmmm...</span></span><br />
<div class="ar"><br />
</div><div class="ar"><strong>UPDATE</strong></div><div class="ar">the explanation is as follows:</div><div class="ar"><br />
</div><div class="ar"><span style="font-size: x-small;">your VM is set to German, right? What happens is that the <br />
Browser asks for English, but RWT does not find a messages_en.properties <br />
file. So it tries the default locale, in your case German and Bingo! <br />
there is a messages_de.properties file. So you get German. If you want to <br />
have English as your fallback, set your VM to English. Does this explain <br />
the behavior?<br />
<br />
Regards, Ralf<br />
<br />
-- <br />
Ralf Sternberg</span></div><a href="http://www.blogger.com/index.php?t=report&msg_id=653046&S=fc5e4908425a6efbecfc80721fffbd7c"></a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-76494604641024650542011-02-08T09:08:00.000+01:002011-02-08T09:58:18.024+01:00I18n in RAP. What a chore!I18n is bad enough, but in RAP there is even more typing to do :-(<br />
<br />
You need to create a Messages class and add a public field for every string you need to translate. You then have to create a properties file for each language and add the texts. The convention for key names is Classname_fieldname.<br />
<br />
For example:<br />
<br />
<strong>Messages.java</strong><br />
...<br />
public String MyView_controltext;<br />
...<br />
<br />
<strong>Messages.properties</strong><br />
...<br />
MyView_controltext = Hello World<br />
...<br />
<br />
<strong>MyView.java</strong><br />
...<br />
control.setText(Messages.get().MyView_controltext);<br />
...<br />
<br />
I made life a liitle easier by adding a template. Window -> Preferences -> Java -> Editor -> Templates -> New...<br />
Name = msg (or whatever you like)<br />
Pattern = <span style="font-family: inherit;">Messages.get().${enclosing_type}_${cursor}</span><br />
<br />
Now I can just type 'msg' <Ctrl>+Space and I get most of what I need.<br />
<br />
I can also recommend the Eclipse ResourceBundle Editor at <a href="http://sourceforge.net/projects/eclipse-rbe/">http://sourceforge.net/projects/eclipse-rbe/</a>.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-35943263391172841152011-02-02T10:00:00.000+01:002011-02-08T09:59:10.789+01:00Useful walk-throughs for creating visual webparts using VS 2008<a href="http://greggalipeau.com/2008/05/18/developing-sharepoint-solutions-in-visual-studio/">http://greggalipeau.com/2008/05/18/developing-sharepoint-solutions-in-visual-studio/</a><br />
<br />
<a href="http://www.greggalipeau.com/2009/05/18/developing-sharepoint-webparts-using-user-controls-and-web-applications/">http://www.greggalipeau.com/2009/05/18/developing-sharepoint-webparts-using-user-controls-and-web-applications/</a><br />
<br />
This was my folder structure<br />
<div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmOcC1U_G20_XBS1N1bximUFpCmKtvY7ky4J2577If1AklFfsa9EMuK-_1aH431IUA_CCCmAYfelrG4gLvTCcVOYkLmdhlkj9TRp2ARsrhL4u60WG3NMf0fU9EwRt6UVBmuvm7GjTISM/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" s5="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmOcC1U_G20_XBS1N1bximUFpCmKtvY7ky4J2577If1AklFfsa9EMuK-_1aH431IUA_CCCmAYfelrG4gLvTCcVOYkLmdhlkj9TRp2ARsrhL4u60WG3NMf0fU9EwRt6UVBmuvm7GjTISM/s320/pic1.png" width="209" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">Note that references to the images look like this:</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: "Courier New", Courier, monospace;">ImageUrl="~/_layouts/IMAGES/AwtCalendar/rbut.gif"</span></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div align="left"></div>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-34279293147641036402011-01-27T11:00:00.000+01:002011-02-08T09:59:21.151+01:00Installing SVN plugin for eclipseWent round in circles for a bit with this one. This is what worked for me (Helios release)<br />
<br />
Install SVN plugin from <a href="http://download.eclipse.org/technology/subversive/0.7/update-site/">http://download.eclipse.org/technology/subversive/0.7/update-site/</a><br />
<br />
Install connectors from <a href="http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/" onclick="pageTracker._trackEvent('Downloads', 'Download','Subversive')"><span style="color: #333399;">http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/</span></a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-23387296555932303832011-01-25T11:13:00.000+01:002011-02-08T09:59:36.561+01:00Proxy frustrationsWasting heaps of time trying to access the eclipse & RAP CVS repositories from behind the company firewall & proxy. Been through all the help pages I can find but no success. The admins here say that SOCKS is not allowed but it ought to be possible to get at proxy.eclipse.org using port 80. Why is it not working?!<br />
<br />
Grrrrr :-(paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-60493771058062083342011-01-21T11:15:00.000+01:002011-02-08T10:00:14.547+01:00Using the JFace forms package from the RAP incubatorI wanted to use the collapsible Section control so I downloaded the JFace Forms package from the RAP source repository <a href="http://www.blogger.com/:pserver:dev.eclipse.org:/cvsroot/rt">:pserver:dev.eclipse.org:/cvsroot/rt </a>. <br />
<br />
Just import <strong>org.eclipse.rap.ui.forms</strong> and add to the main plugin Dependencies and it's done. As I understand it, the forms package is not yet official so I guess there might be some bugs. In fact, the section twistie doesn't react to the mouse click but the title section does so it's not a major problem.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-79968385936026516522011-01-19T07:53:00.000+01:002011-01-19T08:36:55.293+01:00Coding vs ConfigurationAfter a very frustrating afternoon trying to understand the configuration of ActionSets, Activities, Services etc - without success - I am wondering just how necessary it all is when writing a one-off RAP application. There is just the one plug-in and it will never be added to another plug-in set and will never have to co-operate or negotiate with other plug-ins.<br />
<br />
So is it really necessary to do all this configuration? Can I do away with x layers of abstraction and just code the stuff I need directly? That would seem to be the pragmatic approach but I wonder what the consequences are are the project gets bigger.paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-33325165344134087502011-01-18T16:02:00.000+01:002011-02-08T09:59:47.345+01:00Role-based security in RAPBeen struggling this afternoon with role-dependent actions. I want to disable some actions unless the current user has the 'admin' role.<br />
<br />
Found this document <a href="http://ftp.bredex.de/rcp-auth/RCP_Authorization.pdf">http://ftp.bredex.de/rcp-auth/RCP_Authorization.pdf</a> which looks interesting. There is also a FAQ on the RAP site which covers this topic but I couldn't get it to work as I expected. The downloadable demo didn't function either :-(<br />
<br />
More info found here <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71857">https://bugs.eclipse.org/bugs/show_bug.cgi?id=71857</a><br />
<pre class="bz_comment_text">You could try using the activities mechanism for this.
See
<a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm">http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_activities.htm</a>
You would:
- define separate activities corresponding to the different access levels
- define your actions in regular action sets, grouped according to access level
- associate each activity with the appropriate action sets via
activityPatternBinding elements
- set the enabled activity ids after authentication, early in the workbench
lifecycle, e.g. from your WorkbenchAdvisor's preStartup() method.
You may want to define dependencies between access levels (e.g. level A includes
level B) using the activityRequirementBinding element.
Note that this mechanism also supports dynamic changes to the set of enabled
activities.
</pre><br />
An article from IBM <a href="http://www.ibm.com/developerworks/opensource/library/os-ecl-rcpsec/index.html">http://www.ibm.com/developerworks/opensource/library/os-ecl-rcpsec/index.html</a><br />
<br />
RAP Wiki <a href="http://wiki.eclipse.org/RAP/Equinox_Security_Integration">http://wiki.eclipse.org/RAP/Equinox_Security_Integration</a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-88058949336689403052011-01-18T13:43:00.000+01:002011-02-10T09:29:04.865+01:00RAP forums & resources<strong>FORUMS</strong><br />
Eclipse.org <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=34&S=424f561068bca8cd9e7e5945e52bafdf">http://www.eclipse.org/forums/index.php?t=thread&frm_id=34&S=424f561068bca8cd9e7e5945e52bafdf</a><br />
<br />
RAP Forum: <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=34">http://www.eclipse.org/forums/index.php?t=thread&frm_id=34</a><br />
<br />
<strong>CASE STUDIES</strong><br />
CAS <a href="http://www.infoq.com/articles/eclipse-rap-casestudy">http://www.infoq.com/articles/eclipse-rap-casestudy</a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-6326467567099633262011-01-18T10:36:00.000+01:002011-01-18T10:59:21.830+01:00First simple app in RAPGot my first simple RAP application running. I used the RAP Mail template to get started and have 2 views: one for navigation and the other to show details of the selection. The application I'm working on is for trade fair management.<br />
<br />
There is still a lot of 'mail' stuff visible which I haven't been able to get rid of yet but here are a few things I did to customize the example.<br />
<br />
<ul><li>Refactor packages and classes to better reflect the application e.g. all 'mail' changed to 'fair'</li>
<li>plugin.xml -> Extensions -> ...ui.branding. Changed 'servletName' from 'mail' to 'fair'</li>
<li>plugin.xml -> Extensions -> ...ui.entrypoint. Changed 'parameter' from 'mail' to 'fair'</li>
</ul>The default branding is not to my taste at all. This will be something to look at soon but seems to be quite extensive.<br />
The packaged examples are worth looking at. Locate 'org.eclipse.rap.design.example' and 'org.eclipse.rap.demo' in the Plug-ins view and then Import As -> Source project. <br />
<br />
I find these a very useful reference and used a number of items from <span style="font-size: x-small;"><span style="font-size: small;"><strong>org.eclipse.rap.demo.controls.TableViewerTab </strong>for my navigation view.</span></span><br />
<br />
<div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7kj_UgicjMCt_X-P373CbkFPggj5womKvm25zugD8MK1Gsch9EZ8Sad_2nVloBPa5Kh0sCHxqXk4l1avmZGuhhfHwcUIjoywTNv-QzEa7cURmC_qbMaPiPgXov2smP99LR7Tgfng6O-8/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" n4="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7kj_UgicjMCt_X-P373CbkFPggj5womKvm25zugD8MK1Gsch9EZ8Sad_2nVloBPa5Kh0sCHxqXk4l1avmZGuhhfHwcUIjoywTNv-QzEa7cURmC_qbMaPiPgXov2smP99LR7Tgfng6O-8/s320/pic1.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">As I don't like the branding I edited the plug-in to remove the template's branding and replaced it with a default.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTREedPM7pLTLoxsVLlfQQFRtyvRbaIj9V4sthn5frTqoQ_b6cpCP9BzrvhqM2iTHEghNY6sTSXKl9T522xmycFlw4fyWaXcIax9Ag3L9QPj9G8kyJHEDk4E1mGy5hGBhcocZG4SXGxCk/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="105" n4="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTREedPM7pLTLoxsVLlfQQFRtyvRbaIj9V4sthn5frTqoQ_b6cpCP9BzrvhqM2iTHEghNY6sTSXKl9T522xmycFlw4fyWaXcIax9Ag3L9QPj9G8kyJHEDk4E1mGy5hGBhcocZG4SXGxCk/s320/pic1.png" width="320" /></a></div><br />
And the application now looks quite different.<br />
<br />
<div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8cmEPlIfcYXWaXQhIukj_f6HJ0YL5c0F_kWoW1Ew1WYm0wT5XGAYu8aGPHa3dgIobBx1fBLCQtl2dzUsTKIcgg30t-9MIQkVM-9IpejxUif5DX5jU6EIZSQi8FOzERLCfHe-2ZL3GR0A/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" n4="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8cmEPlIfcYXWaXQhIukj_f6HJ0YL5c0F_kWoW1Ew1WYm0wT5XGAYu8aGPHa3dgIobBx1fBLCQtl2dzUsTKIcgg30t-9MIQkVM-9IpejxUif5DX5jU6EIZSQi8FOzERLCfHe-2ZL3GR0A/s320/pic1.png" width="320" /></a></div><div align="left" class="separator" style="clear: both; text-align: center;"></div>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-88670430122842964042011-01-17T14:34:00.000+01:002011-01-17T14:39:17.099+01:00Class path problems in eclipse plug-ins<span style="font-family: inherit;">As I mentioned in a previous post, out of desperation I added the DB2 jar to an eclipse plug-in. I then innocently tried to load it using:</span><br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"><span style="color: #7f0055;">try</span><span style="font-family: "Courier New", Courier, monospace;"> {</span></span> <br />
<div align="left"><div align="left"><span style="font-family: "Courier New", Courier, monospace;"> Class.<i>forName</i>(<span style="color: #2a00ff;"><span style="color: #2a00ff;">"com.ibm.db2.jcc.DB2Driver"</span></span>);</span></div><div align="left"><span style="font-family: "Courier New", Courier, monospace;">} <span style="color: #7f0055;"><span style="color: #7f0055;">catch</span></span></span><span style="font-family: "Courier New", Courier, monospace;"> (ClassNotFoundException e) {</span></div><div align="left"><span style="font-family: "Courier New", Courier, monospace;"> Activator.<i>logError</i>(<span style="color: #2a00ff;"><span style="color: #2a00ff;">"getConnection"</span></span>, e);</span></div><div align="left"><span style="color: #7f0055;"><span style="color: #7f0055;"><span style="font-family: "Courier New", Courier, monospace;"> throw</span></span></span><span style="font-family: "Courier New", Courier, monospace;"> e;</span></div><div align="left"><span style="font-family: "Courier New", Courier, monospace;">}</span></div><div align="left"><span style="color: #7f0055;"><span style="color: #7f0055;"><span style="font-family: "Courier New", Courier, monospace;">return</span></span></span><span style="font-family: "Courier New", Courier, monospace;"> DriverManager.<i>getConnection</i>(<span style="color: #2a00ff;"><span style="color: #2a00ff;">"jdbc:db2://servername"</span></span>, <span style="color: #2a00ff;"><span style="color: #2a00ff;">"user"</span></span>, <span style="color: #2a00ff;"><span style="color: #2a00ff;">"pwd"</span></span>);</span></div></div><div align="left"><br />
<span style="font-family: inherit;">This did not work. Eclipse plug-ins have their own class loader and the DB2 jar must be added to the plug-in classpath.</span></div><div align="left"><span style="font-family: inherit;"><br />
</span></div><div align="left"><span style="font-family: inherit;">Open the plugin.xml and select the 'Runtime' tab. In the 'Classpath' section select 'Add...' and choose the DB2.jar (and any other JARs which are needed).</span></div><div align="left"><span style="font-family: inherit;"><br />
</span></div><div align="left"><span style="font-family: inherit;">Best practice (I would guess) would be to have separate plug-ins for each external library (log4j, db2 etc).</span></div>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0tag:blogger.com,1999:blog-3391982002163297194.post-7522169324693745822011-01-17T14:22:00.000+01:002011-02-10T09:52:16.979+01:00RAP: First difficulties - how to define a database connectionI have been working on J2EE projects for many years and am used to defining resouces such as DB connections in the EAR project. The connection is picked up at runtime using a JNDI lookup. Scripts are used to modify the actual connection details depending on the target environment: test, stage, production etc.<br />
<br />
So how should this be done in RAP? At the end of the day it will also be a J2EE application and we will want to deploy to one of a number of target systems. How well will it integrate in our existing deployment system?<br />
<br />
After a lot of head scratching I decided to adopt the pragmatic (impatient) approach and bunged the DB2 jar into the project just so that I could get on with the interesting stuff.<br />
<br />
As soon as I find a better approach (there had better be one!) I will post again here.<br />
<br />
<strong>UPDATES:</strong><br />
<br />
<a href="http://www.eclipse.org/forums/index.php?t=msg&th=174000&start=0">Howto access backend services from RAP application?</a>paulhttp://www.blogger.com/profile/16116821313806801752noreply@blogger.com0