Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SingletonServiceTest-ejb

Description

Testing applications for HA singleton MSC services. Each of the applications will be deployed on all cluster nodes, but the service will be active only on one node at any given time.

The project is structured into 4 main modules with 1 additional module for manual testing:

Public API (api)

This is built with Java target 6, because of some internal implementation details.

  • ServiceAccess, the @Remote interface exposed by ServiceAccessBean (see below) that provides the functionality of the singleton service

Common Classes (common)

Classes that are shared between the startup-ejb and service-activator modules (see below).

  • TestingSingletonService, which is an HA singleton service that provides current node name, which is the name of the cluster node where the service is currently running
  • MyTimerBean, which is a @Singleton EJB that shows how to create a HA singleton EJB timer; it provides two methods:
    • initialize, which creates an EJB timer that logs a message each second; this method is called by the TestingSingletonService during activation
    • stop, which cancels the previously created EJB timer; this method is called by the TestingSingletonService during removal
  • ServiceAccessBean, which is a @Stateless EJB that exposes the TestingSingletonService to EJB clients

Startup EJB + Custom Singleton Policy (startup-ejb)

An application that activates the singleton service using a @Singleton @Startup EJB and uses a custom, in-place built singleton policy.

  • SingletonStartupBean, which is a @Singleton @Startup EJB that installs and activates the TestingSingletonService during @PostConstruct and removes it during @PreDestroy

Service Activator + Policy from Singleton Subsystem (service-activator)

An application that activates the singleton service using ServiceActivator and uses a singleton policy defined in the singleton subsystem.

  • SingletonActivator, which is a ServiceActivator that installs and activates the TestingSingletonService

Standalone Client for Manual Testing (client)

  • Main, which is a Java application that uses JBoss EJB Client to invoke the ServiceAccessBean remotely; it is not used for automated tests, but can be easily used for manual testing when required

Build

The standard Maven incantation is everything you need: mvn clean install. Maven 3 is assumed.

Versions

Major version number is the generation number of JBoss EAP that is targeted by the applications. Minor version number is specific to this application.

About

testing application for JBoss AS7 / WildFly HA singleton services

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages