JBoss Fuse-
Running on JBoss EAP
Christina Lin
Before you begin....
Here are few things you will need to have:
- Installed JBoss Developer Studio with Integration plugins
- Download JBoss EAP 6.4.0 jar installer
- jboss-eap-6.4.0-installer.jar
- Download JBoss Fuse EAP patch
- fuse-eap-installer-6.2.1.redhat-xxx.jar
Setup local maven repositories
- Go to your ~/.m2/settings.xml, add the following repositories.
<profiles>
<profile>
<id>jboss-repos</id>
<repositories>
<repository>
<id>jboss-ga-repository</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
Setup local maven repositories
- Continued...
<repository>
<id>jboss-earlyaccess-repository</id>
<url>http://maven.repository.redhat.com/earlyaccess/all/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Setup local maven repositories
- Continued...
<pluginRepositories>
<pluginRepository>
<id>jboss-earlyaccess-plugin-repository</id>
<url>http://maven.repository.redhat.com/earlyaccess/all/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
Setup local maven repositories
- Continued...
<pluginRepository>
<id>jboss-ga-plugin-repository</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
Setup local maven repositories
- Continued...
<profile>
<id>fuse-repos</id>
<repositories>
<repository>
<id>fusesource-release-repository</id>
<url>https://repo.fusesource.com/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
Setup local maven repositories
- Continued...
<repository>
<id>fusesource-earlyaccess-repository</id>
<url>https://repo.fusesource.com/nexus/content/groups/ea</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
Setup local maven repositories
- Continued...
<pluginRepositories>
<pluginRepository>
<id>fusesource-release-plugin-repository</id>
<url>https://repo.fusesource.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
Setup local maven repositories
- Continued...
<pluginRepository>
<id>fusesource-earlyaccess-plugin-repository</id>
<url>https://repo.fusesource.com/nexus/content/groups/ea</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
Setup local maven repositories
- Continued...
<activeProfiles>
<activeProfile>jboss-repos</activeProfile>
<activeProfile>fuse-repos</activeProfile>
</activeProfiles>
Currency Exchange Application
Setup JBoss EAP
Run jboss-eap-6.4.0-installer.jar to start install JBoss EAP
Install Fuse in EAP
Run fuse-eap-installer-6.2.1.redhat-xxx.jar to start setup Fuse libraries and configuration in EAP
java -jar fuse-eap-installer-6.2.1.redhat-xxx.jar your_eap_installpath
And your EAP is now ready!
Start the EAP by running to eap_installpath/bin/standalone.sh
Setup DataSource
- Copy the H2 database file fuseoneap.h2.db to ~/h2
- Logon to JBoss EAP admin console http://localhost:9990 using the password you set from previous steps
- Go to Configuration, select Connector and then to datasources.
- Name :MyCamelDS
- JNDI Name: java:jboss/datasources/MyCamelDS
Setup DataSource
-
Select H2 as JDBC driver for this datasource
-
Enter
-
Connection URL: jdbc:h2:file:~/h2/fuseoneap;AUTO_SERVER=TRUE
-
Username: sa
-
Password:
-
Setup DataSource
-
Change the min and max pool size to 1 and 10. And then enable the MyCamelDS datasource.
Start Developing!
-
In JBoss Developer Studio, create an new maven project
-
Select wildfly-camel-archetype-cdi
-
Uncheck "Show the last version on Archetype only" checkbox and select version 2.3.0-redhat-621084
-
Group Id: com.redhat
-
Artifact Id: currencylab
Delete the unwanted
-
Delete two java files under com.redhat.currencylab
-
MyServlet.java
-
MyBean.java
-
Producer
-
Create a Producer class that lookup the JNDI resource and register it in CDI context
-
DatasourceProducer
-
- Enter following settings.
public class DatasourceProducer { @Resource(lookup= "java:jboss/datasources/MyCamelDS") DataSource dataSource; @Produces @Named("MyCamelDS") public DataSource getDataSource() { return dataSource; } }
Data Access Route
-
Go to MyRouteBuilder.java under com.redhat.currencylab
from("direct:getCurrencies").routeId("allcurrencies") .to("sql:select * from currencyexchange?dataSource=MyCamelDS") .marshal() .json(JsonLibrary.Jackson);
- Enter following route in configure method
Currency Convertor Bean
-
Create Java Bean class that does the actual calculation of currency.
-
CurrencyConvertor
-
-
Enter the following content to bean
@Named("currencyconvertor")
public class CurrencyConvertor {
public double convertUSD(double amt, ArrayList<Map<String, Object>> data){
Double rate = (Double)data.get(0).get("rate");
return amt*rate;
}
}
Currency Convertor Route
-
Go to MyRouteBuilder.java under com.redhat.currencylab
- Enter following route in configure method
from("direct:getCurrency").routeId("covertcurrency")
.log("Got currency: ${headers.amt} and amt${headers.currency} ")
.choice()
.when()
.header("currency")
.to("sql:select * from currencyexchange where currencycode = :#currency?dataSource=MyCamelDS")
.log("exchange rate ====> ${body[0][rate]}")
.to("bean:currencyconvertor?method=convertUSD(${headers.amt},${body})")
.otherwise()
.log("nothing to lookup")
.transform().constant("nothing to lookup");
Setup Web Endpoint
-
Generate web.xml by right click on Deployment Descriptor -> Generate Deployment Descriptor Stub
-
Add following servlet setting in the web.xml file.
<servlet> <servlet-name>camel</servlet-name> <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>camel</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
Servlet Endpoint Route
-
Go to MyRouteBuilder.java under com.redhat.currencylab
- Enter following route in configure method
from("servlet:///currencies?servletName=camel&matchOnUriPrefix=true") .routeId("servletCurrencies") .to("direct:getCurrencies"); from("servlet:///currency?servletName=camel&matchOnUriPrefix=true") .routeId("servletCurrency") .to("direct:getCurrency");
Restful Endpoint Route
-
In MyRouteBuilder.java under com.redhat.currencylab
- Enter following route in configure method
restConfiguration().component("servlet") .contextPath("/camel").port(8080).bindingMode(RestBindingMode.json); rest("/currenciesrest") .get() .produces(MediaType.APPLICATION_JSON) .to("direct:getCurrencies");
<dependency> <groupId>org.jboss.spec.javax.ws.rs</groupId> <artifactId>jboss-jaxrs-api_1.1_spec</artifactId> <scope>provided</scope> </dependency>
- Add the dependency in
pom.xml
Display Page
-
Add index.html under webapp folder
-
Download the web file
-
Build Fuse Application
-
Build Fuse Application by right click on application, Run As, Maven Build
- Enter clean install
- If everything goes well, you will find a application package currencylab.war under target folder
Deploying Application
-
Logon to EAP admin console. http://localhost:9990 under runtime, click on "add" button, to add the war file to deploy
-
Enable the application by clicking on En/Disable button
The Currency App
Fuse on EAP Lab
By weimeilin
Fuse on EAP Lab
- 6,496