Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ServiceMix 4 Make the container match the project Gert Vanthienen r&d engineer anova r&d bvba [email_address]
Who am I? <ul><li>Gert Vanthienen (gert@anova.be) </li></ul><ul><ul><li>10 years of technology r&d engineering </li></ul><...
Goals <ul><li>Learn about ServiceMix 4.1 </li></ul><ul><ul><li>Functionality and use of </li></ul></ul><ul><ul><ul><li>Com...
Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apac...
Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apac...
ServiceMix 3 to ServiceMix 4 <ul><li>ServiceMix 3 </li></ul><ul><ul><li>JBI 1.0 container </li></ul></ul><ul><ul><li>JBI C...
 
 
Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apac...
 
Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel container? </li></ul><ul><ul><li>Comma...
Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel Container? </li></ul><ul><ul><li>Comma...
Introducing Karaf <ul><li>A flexible OSGi-based server runtime </li></ul><ul><li>Choice of OSGi runtime: </li></ul><ul><ul...
Introducing Karaf <ul><li>Some other features </li></ul><ul><ul><li>Provisioning through feature descriptors </li></ul></u...
Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>Create Camel Container </li></ul><ul><ul><li>Command shell ...
Karaf: Command Shell <ul><li>Based on Apache Felix Gogo </li></ul><ul><ul><li>Implementation of OSGi RFC-147 </li></ul></u...
Karaf: Command Shell Install, start and list OSGi bundles karaf@root> osgi:install file:/Users/gert/restaurant-1.0.jar Bun...
Karaf: Feature descriptors <ul><li>Default Karaf provisioning mechanism </li></ul><ul><li>XML descriptor for installing so...
Karaf: Feature descriptors <? xml   version = &quot;1.0&quot;   encoding = &quot;UTF-8&quot; ?> < features   name = &quot;...
Karaf: Feature descriptors <ul><li>A feature can be installed </li></ul><ul><ul><li>Using command shell </li></ul></ul><ul...
Karaf: Feature descriptors <ul><li>What's available? </li></ul><ul><ul><li>Karaf provides a few basic features </li></ul><...
Karaf: Hot-deployment <ul><li>Hot-deployment based on Felix FileInstall </li></ul><ul><ul><li>Karaf supports deployment of...
Karaf: Create a Camel container <ul><li>Create a Camel container </li></ul><ul><ul><li>Add features URL for Camel </li></u...
Karaf: Create a Camel container <ul><li>Deploy the route in a Spring XML </li></ul><? xml   version = &quot;1.0&quot; ?> <...
Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel container? </li></ul><ul><ul><li>Comma...
Karaf: Admin commands <ul><li>Karaf allows you to create child instances </li></ul><ul><ul><li>share the system directory ...
Karaf: Admin commands Create a test instance running the http service karaf@root> admin:create test Creating new instance ...
Karaf: Blueprint Services <ul><li>OSGi standard for IoC/DI </li></ul><ul><ul><li>Inspired by Spring DM (is also the RI) </...
Karaf: Blueprint Services <ul><li>Blueprint is a first-class citizen in Karaf </li></ul><ul><ul><li>Installed by default  ...
Karaf: Blueprint Services <ul><li>Starting a restaurant that needs a kitchen </li></ul><? xml   version = &quot;1.0&quot; ...
Karaf: Blueprint Services <ul><li>Install bundles and check status </li></ul>karaf@resto> osgi:install -s mvn:org.tssjs.sm...
Karaf: Web Console <ul><li>Installable as a feature </li></ul><ul><li>Based on Felix Web Console </li></ul><ul><li>A set o...
Karaf: Web Console
Karaf: Web Console
 
ServiceMix 4 NMR <ul><li>easy to use messaging API (Exchange, Message, Endpoint, ...) ‏ </li></ul><ul><li>handles XML and ...
ServiceMix NMR <ul><li>installable as a Karaf feature </li></ul><ul><li>You can use it for loosely coupled integration </l...
ServiceMix NMR < beans  xmlns = &quot;http://www.springframework.org/schema/beans&quot;    xmlns:xsi = &quot;http://www.w3...
 
ServiceMix JBI <ul><li>Support for JBI 1.0 </li></ul><ul><ul><li>Installable in Karaf as a feature  </li></ul></ul><ul><ul...
Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apac...
Wrap it up <ul><li>ServiceMix 4 </li></ul><ul><ul><li>OSGi container with support for JBI 1.0 </li></ul></ul><ul><ul><li>O...
References <ul><li>Interested? Want to get involved? </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><ul><...
Questions
Session Evaluation <ul><li>Please complete a session evaluation and turn it into any conference staff member or at the reg...
Upcoming SlideShare
Loading in …5
×

Gert Vanthienen Presentation

1,893 views

Published on

Published in: Technology, Education
  • Be the first to comment

Gert Vanthienen Presentation

  1. 1. ServiceMix 4 Make the container match the project Gert Vanthienen r&d engineer anova r&d bvba [email_address]
  2. 2. Who am I? <ul><li>Gert Vanthienen (gert@anova.be) </li></ul><ul><ul><li>10 years of technology r&d engineering </li></ul></ul><ul><ul><ul><li>Integrating open-source technology </li></ul></ul></ul><ul><ul><ul><li>Legacy integration with IBM i </li></ul></ul></ul><ul><ul><li>open-source activities </li></ul></ul><ul><ul><ul><li>Apache Camel, Felix and ServiceMix Committer </li></ul></ul></ul><ul><ul><ul><li>Member of Progress' FUSE team </li></ul></ul></ul>
  3. 3. Goals <ul><li>Learn about ServiceMix 4.1 </li></ul><ul><ul><li>Functionality and use of </li></ul></ul><ul><ul><ul><li>Components and sub-projects </li></ul></ul></ul><ul><ul><ul><li>OSGi standards </li></ul></ul></ul><ul><li>Learn how to build your own container </li></ul><ul><ul><li>Start with an empty Karaf instance </li></ul></ul><ul><ul><li>Add elements you need for your project </li></ul></ul>
  4. 4. Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><li>Apache ServiceMix NMR </li></ul></ul><ul><ul><li>Apache ServiceMix JBI </li></ul></ul><ul><li>Wrap it up </li></ul>
  5. 5. Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><li>Apache ServiceMix NMR </li></ul></ul><ul><ul><li>Apache ServiceMix JBI </li></ul></ul><ul><li>Wrap it up </li></ul>
  6. 6. ServiceMix 3 to ServiceMix 4 <ul><li>ServiceMix 3 </li></ul><ul><ul><li>JBI 1.0 container </li></ul></ul><ul><ul><li>JBI Components 2009.0x </li></ul></ul><ul><li>ServiceMix 4 </li></ul><ul><ul><li>JBI 1.0 support built on top of OSGi </li></ul></ul><ul><ul><li>The same set of JBI Components </li></ul></ul>
  7. 9. Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><li>Apache ServiceMix NMR </li></ul></ul><ul><ul><li>Apache ServiceMix JBI </li></ul></ul><ul><li>Wrap it up </li></ul>
  8. 11. Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel container? </li></ul><ul><ul><li>Command shell </li></ul></ul><ul><ul><li>Feature descriptors </li></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><li>A few more Karaf features </li></ul>
  9. 12. Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel Container? </li></ul><ul><ul><li>Command shell </li></ul></ul><ul><ul><li>Feature descriptors </li></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><li>A few more Karaf features </li></ul>
  10. 13. Introducing Karaf <ul><li>A flexible OSGi-based server runtime </li></ul><ul><li>Choice of OSGi runtime: </li></ul><ul><ul><li>Apache Felix </li></ul></ul><ul><ul><li>Eclipse Equinox </li></ul></ul><ul><li>Manage the container using: </li></ul><ul><ul><li>command shell </li></ul></ul><ul><ul><li>web console </li></ul></ul>
  11. 14. Introducing Karaf <ul><li>Some other features </li></ul><ul><ul><li>Provisioning through feature descriptors </li></ul></ul><ul><ul><li>Applications </li></ul></ul><ul><ul><ul><li>Spring DM and Blueprint </li></ul></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><ul><li>Manage child instances </li></ul></ul><ul><ul><li>Failover using file or JDBC lock </li></ul></ul>
  12. 15. Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>Create Camel Container </li></ul><ul><ul><li>Command shell </li></ul></ul><ul><ul><li>Feature descriptors </li></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><li>A few more Karaf features </li></ul>
  13. 16. Karaf: Command Shell <ul><li>Based on Apache Felix Gogo </li></ul><ul><ul><li>Implementation of OSGi RFC-147 </li></ul></ul><ul><li>Uses a <group>:<command> syntax </li></ul><ul><li>Command shell can be accessed </li></ul><ul><ul><li>Directly when starting the container </li></ul></ul><ul><ul><li>Using an SSH client </li></ul></ul><ul><li>TAB-completion, |, utilities like grep and cat </li></ul>
  14. 17. Karaf: Command Shell Install, start and list OSGi bundles karaf@root> osgi:install file:/Users/gert/restaurant-1.0.jar Bundle ID: 30 karaf@root> osgi:start 30 karaf@root> osgi:install -s mvn:org.tssjs.smx4/mexican/1.0 Bundle ID: 31 karaf@root> osgi:list | grep TSSJS [ 30] [Active ] [ ] [ 60] TSSJS :: Restaurant (1.0) [ 31] [Active ] [ ] [ 60] TSSJS :: Kitchen :: Mexican (1.0) Logging karaf@root> log:get Level: INFO karaf@root> log:set DEBUG karaf@root> log:display Change settings through the OSGi ConfigAdmin karaf@root> config:edit org.apache.felix.karaf.shell.ssh karaf@root> config:propset sshPort 8100 karaf@root> config:update … and these are just a few examples
  15. 18. Karaf: Feature descriptors <ul><li>Default Karaf provisioning mechanism </li></ul><ul><li>XML descriptor for installing software </li></ul><ul><ul><li>List of bundles to install </li></ul></ul><ul><ul><li>Configuration information </li></ul></ul><ul><ul><li>Dependencies between features </li></ul></ul>
  16. 19. Karaf: Feature descriptors <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < features name = &quot;karaf-1.1.0-SNAPSHOT&quot; > < feature name = &quot;http&quot; version = &quot;1.1.0-SNAPSHOT&quot; > < config name = &quot;org.ops4j.pax.web&quot; > org.osgi.service.http.port=8181 </ config > <!-- snip --> < bundle > mvn:org.ops4j.pax.web/pax-web-bundle/0.6.0 </ bundle > </ feature > < feature name = &quot;webconsole&quot; version = &quot;1.1.0-SNAPSHOT&quot; > < feature version = &quot;1.1.0-SNAPSHOT&quot; > http </ feature > <!-- snip --> < bundle > mvn:org.apache.felix/org.apache.felix.webconsole/1.2.10 </ bundle > </ feature > </ features >
  17. 20. Karaf: Feature descriptors <ul><li>A feature can be installed </li></ul><ul><ul><li>Using command shell </li></ul></ul><ul><ul><li>Using the web console </li></ul></ul>karaf@root> features:install webconsole karaf@root> features:list State Version Name Repository [uninstalled] [2.5.6.SEC01 ] spring karaf-1.1.0-SNAPSHOT [uninstalled] [1.2.0 ] spring-dm karaf-1.1.0-SNAPSHOT [installed ] [1.1.0-SNAPSHOT] http karaf-1.1.0-SNAPSHOT [installed ] [1.1.0-SNAPSHOT] webconsole karaf-1.1.0-SNAPSHOT
  18. 21. Karaf: Feature descriptors <ul><li>What's available? </li></ul><ul><ul><li>Karaf provides a few basic features </li></ul></ul><ul><ul><ul><li>wrapper, webconsole, spring, spring-dm, ... </li></ul></ul></ul><ul><ul><li>ServiceMix 4.1 comes with </li></ul></ul><ul><ul><ul><li>NMR/JBI support and JBI components </li></ul></ul></ul><ul><ul><ul><li>Features for ActiveMQ, CXF, Pax Web, ... </li></ul></ul></ul><ul><ul><li>Other projects </li></ul></ul><ul><ul><ul><li>Apache Camel: EIP-based integration framework </li></ul></ul></ul><ul><ul><ul><li>Apache Sling: content-driven web framework </li></ul></ul></ul>
  19. 22. Karaf: Hot-deployment <ul><li>Hot-deployment based on Felix FileInstall </li></ul><ul><ul><li>Karaf supports deployment of </li></ul></ul><ul><ul><ul><li>Bundles </li></ul></ul></ul><ul><ul><ul><li>Expanded bundles </li></ul></ul></ul><ul><ul><ul><li>XML files (Spring, Blueprint and feature) </li></ul></ul></ul><ul><ul><li>An extensible mechanism </li></ul></ul><ul><ul><ul><li>Spring XML files with Spring feature installed </li></ul></ul></ul><ul><ul><ul><li>JBI artifacts with JBI feature installed </li></ul></ul></ul><ul><ul><ul><li>WAR files with web feature installed </li></ul></ul></ul>
  20. 23. Karaf: Create a Camel container <ul><li>Create a Camel container </li></ul><ul><ul><li>Add features URL for Camel </li></ul></ul><ul><ul><li>Install camel-osgi and camel-ftp </li></ul></ul>karaf@root> features:addUrl mvn:org.apache.camel.karaf/features/2.1-SNAPSHOT/xml/features karaf@root> features:install camel-o camel-ognl camel-osgi karaf@root> features:install camel-osgi karaf@root> features:install camel-ftp
  21. 24. Karaf: Create a Camel container <ul><li>Deploy the route in a Spring XML </li></ul><? xml version = &quot;1.0&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot; http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd&quot; > < camelContext xmlns = &quot;http://camel.apache.org/schema/spring&quot; > < route > < from uri = &quot;ftp://ck@ftp.resto.eu/recipes?password=secret&quot; /> < to uri = &quot;file:/home/recipes/in&quot; /> </ route > </ camelContext > </ beans >
  22. 25. Apache Felix Karaf <ul><li>Introducing Karaf </li></ul><ul><li>How-to build a Camel container? </li></ul><ul><ul><li>Command shell </li></ul></ul><ul><ul><li>Feature descriptors </li></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><li>A few more Karaf features </li></ul>
  23. 26. Karaf: Admin commands <ul><li>Karaf allows you to create child instances </li></ul><ul><ul><li>share the system directory (which holds the base bundles) </li></ul></ul><ul><ul><li>each has its own etc, deploy, data, … </li></ul></ul><ul><ul><li>automatically assigned a new ssh port </li></ul></ul>
  24. 27. Karaf: Admin commands Create a test instance running the http service karaf@root> admin:create test Creating new instance on port 8102 at ... karaf@root> admin:start test karaf@root> admin:connect test Connecting to host localhost on port 8102 Connected karaf@test> features:install http karaf@test> ^D karaf@root> admin:list Port State Pid Name [ 8102] [Started ] [ 1000] test karaf@root> admin:stop test karaf@root> admin:destroy test
  25. 28. Karaf: Blueprint Services <ul><li>OSGi standard for IoC/DI </li></ul><ul><ul><li>Inspired by Spring DM (is also the RI) </li></ul></ul><ul><ul><li>We use Geronimo blueprint by default (and Spring DM is available as a feature) </li></ul></ul><ul><ul><li>Features </li></ul></ul><ul><ul><ul><li>XML Configuration file </li></ul></ul></ul><ul><ul><ul><li>Register beans as services in OSGi Service Registry </li></ul></ul></ul><ul><ul><ul><li>Reference other service in OSGi Service Registry </li></ul></ul></ul><ul><ul><ul><li>Extensible through custom namespaces </li></ul></ul></ul>
  26. 29. Karaf: Blueprint Services <ul><li>Blueprint is a first-class citizen in Karaf </li></ul><ul><ul><li>Installed by default </li></ul></ul><ul><ul><li>Used internally for Karaf/ServiceMix </li></ul></ul><ul><ul><li>Hot-deployment </li></ul></ul><ul><ul><ul><li>Plain XML configuration files </li></ul></ul></ul><ul><ul><ul><li>OSGI-INF/blueprint/*.xml in bundles </li></ul></ul></ul><ul><ul><li>Lifecycle states available in osgi:list </li></ul></ul>
  27. 30. Karaf: Blueprint Services <ul><li>Starting a restaurant that needs a kitchen </li></ul><? xml version = &quot;1.0&quot; ?> < blueprint xmlns = &quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot; > < service interface = &quot;org.tssjs.smx4.Restaurant&quot; > < bean class = &quot;org.tssjs.smx4.impl.RestaurantImpl&quot; > < property name = &quot;location&quot; value = &quot;Prague&quot; /> < property name = &quot;kitchen&quot; ref = &quot;kitchenRef&quot; /> </ bean > </ service > < reference id = &quot;kitchenRef&quot; interface = &quot;org.tssjs.smx4.Kitchen&quot; /> </ blueprint >
  28. 31. Karaf: Blueprint Services <ul><li>Install bundles and check status </li></ul>karaf@resto> osgi:install -s mvn:org.tssjs.smx4/restaurant/1.0 Bundle ID: 30 karaf@resto> osgi:list | grep TSSJS [ 30] [Active ] [GracePeriod] [ 60] TSSJS :: Restaurant (1.0) karaf@resto> osgi:install -s mvn:org.tssjs.smx4/mexican/1.0 Bundle ID: 31 karaf@resto> osgi:list | grep TSSJS [ 30] [Active ] [Created ] [ 60] TSSJS :: Restaurant (1.0) [ 31] [Active ] [Created ] [ 60] TSSJS :: Kitchen :: Mexican (1.0)
  29. 32. Karaf: Web Console <ul><li>Installable as a feature </li></ul><ul><li>Based on Felix Web Console </li></ul><ul><li>A set of extra plugins for Karaf </li></ul><ul><ul><li>Admin plugin for managing instances </li></ul></ul><ul><ul><li>Features plugin </li></ul></ul><ul><ul><li>Gogo plugin </li></ul></ul>
  30. 33. Karaf: Web Console
  31. 34. Karaf: Web Console
  32. 36. ServiceMix 4 NMR <ul><li>easy to use messaging API (Exchange, Message, Endpoint, ...) ‏ </li></ul><ul><li>handles XML and POJO payloads </li></ul><ul><li>listener interfaces to monitor the NMR (ExchangeListener, EndpointListener, …) ‏ </li></ul><ul><li>support for wiring endpoints and intercepting exchanges </li></ul><ul><li>command shell for managing the NMR </li></ul>
  33. 37. ServiceMix NMR <ul><li>installable as a Karaf feature </li></ul><ul><li>You can use it for loosely coupled integration </li></ul><ul><ul><li>Camel routes </li></ul></ul><ul><ul><li>CXF web services </li></ul></ul><ul><ul><li>… add anything else yourself here </li></ul></ul><ul><li>We use it to build our JBI integration layer </li></ul>
  34. 38. ServiceMix NMR < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;...&quot; > < import resource = &quot;classpath:org/apache/servicemix/camel/nmr/camel-nmr.xml&quot; /> < camelContext xmlns = &quot;http://camel.apache.org/schema/spring&quot; > < route > < from uri = &quot;ftp://ck@ftp.resto.eu/recipes?password=secret&quot; /> < to uri = &quot;nmr:Recipes&quot; /> </ route > <!-- the second route can be in another bundle/xml file --> < route > < from uri = &quot;nmr:Recipes&quot; /> < to uri = &quot;file:/home/recipes/in&quot; /> </ route > </ camelContext > </ beans >
  35. 40. ServiceMix JBI <ul><li>Support for JBI 1.0 </li></ul><ul><ul><li>Installable in Karaf as a feature </li></ul></ul><ul><ul><ul><li>JBI 1.0 API </li></ul></ul></ul><ul><ul><ul><li>JBI Deployment and packaging </li></ul></ul></ul><ul><ul><ul><li>JBI Management MBeans </li></ul></ul></ul><ul><ul><li>Improvements over ServiceMix 3.x </li></ul></ul><ul><ul><ul><li>New cluster engine implementation </li></ul></ul></ul><ul><ul><ul><li>OSGi packaging </li></ul></ul></ul>
  36. 41. Overview <ul><li>ServiceMix 3 to ServiceMix 4 </li></ul><ul><li>ServiceMix 4 from the bottom up </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><li>Apache ServiceMix NMR </li></ul></ul><ul><ul><li>Apache ServiceMix JBI </li></ul></ul><ul><li>Wrap it up </li></ul>
  37. 42. Wrap it up <ul><li>ServiceMix 4 </li></ul><ul><ul><li>OSGi container with support for JBI 1.0 </li></ul></ul><ul><ul><li>Option 1: Use the full package </li></ul></ul><ul><ul><ul><li>Ideal when migrating existing JBI applications </li></ul></ul></ul><ul><ul><li>Option 2: Build your own container </li></ul></ul><ul><ul><ul><li>Start with Karaf and turn it into an - integration server with Camel and CXF - OSGi app server with web console and blueprint - web application server with ActiveMQ for JMS - … </li></ul></ul></ul>
  38. 43. References <ul><li>Interested? Want to get involved? </li></ul><ul><ul><li>Apache Felix Karaf </li></ul></ul><ul><ul><ul><li>http://felix.apache.org/site/apache-felix-karaf.html </li></ul></ul></ul><ul><ul><ul><li>[email_address] </li></ul></ul></ul><ul><ul><li>Apache ServiceMix </li></ul></ul><ul><ul><ul><li>http://servicemix.apache.org </li></ul></ul></ul><ul><ul><ul><li>[email_address] </li></ul></ul></ul>
  39. 44. Questions
  40. 45. Session Evaluation <ul><li>Please complete a session evaluation and turn it into any conference staff member or at the registration desk. Thank you. </li></ul>

×