Ich versuche, meine alte Anwendung in Unternehmen neu zu schreiben, "business" Art und Weise.
Also, ich habe einen Swing-Client mit Login-Modul und meinen eigenen Server von Grund auf neu erstellt. Der Client verwendet ein SSL-Zertifikat, um die TCP-Verbindung zum Server zu verschlüsseln (ich überprüfe das Client-Zertifikat auf dem Server und das Server-Zertifikat auf dem Client) und dann den Server zu verwenden, um den Benutzer zu authentifizieren und zu autorisieren.
Jetzt versuche ich es mit ejb von WildFly 8 CR1 gehostet zu arbeiten. Ich möchte das gleiche Client-Server-Schlüsselpaar verwenden, um den Swing-Client mit dem WildFly-Server zu verbinden und dann den Benutzer mit dem Namen und den Anmeldeinformationen zu authentifizieren, die in der MySQL-Datenquelle gespeichert sind. Ich habe auch Rollen in der Datenbank gespeichert und ich möchte sie verwenden, um Client-Prinzipale zu konfigurieren.
Ich habe einfache, grundlegende EJB-Aufruf:
Context ctx = new InitialContext();
MyBeanRemote bean = (MyBeanRemote)ctx.lookup("AppName/module-0.0.1-SNAPSHOT/MyBean!my.app.MyBeanRemote");
ResultType result = bean.doSomething();
Ich habe jndi.properties
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=http-remoting://myServer:8080
jboss.naming.client.ejb.context=true
java.naming.security.principal=app-user-name
[email protected]
-Datei und ich habe grundlegende Datenquelle Konfiguration
<datasource jta="false" jndi-name="java:jboss/datasources/MyDB" pool-name="MyDB" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://localhost:3306/Mydb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql-connector-java-5.1.28-bin.jar</driver>
<security>
<user-name>mysqlUser</user-name>
<password>mysqlPass</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
Alles oben funktioniert gut.
ich einige Führer gelesen haben, aber noch nicht das finden haben beschrieben, wie der verwenden Composite: EJB (nicht Internet) + Wildfly 8 (nicht JBoss 7) + Verschlüsselung durch SSL + authentifizieren und Autorisierung über Datenquelle mit Login Client Modul
Jede Hilfe wird geschätzt.
Sorry für mein Englisch, verwende ich oft diese Sprache zum Lesen, nicht zu schreiben :)
Danke für Ihre Antwort. Soweit ich weiß, verwendet die CR1-Version von WildFly den Port 4447 überhaupt nicht. Ich wollte eine neue Version von ejb lookup verwenden, aber es hat einfach nicht funktioniert. – Kaskader
Ja, Sie haben Recht - mein Schlechter - Ich habe den neuen HTTP-Upgrade-Mechanismus vergessen. Es ist jetzt 8080 - ich habe die Post repariert. Mein Punkt war, dass Sie nicht den neuen Remoting-Stack verwenden - daher die Links zu den Artikeln für JBoss 7. Ein minimaler Satz von Attributen für ein funktionierendes Remoting wäre: remote.connections = default remote.connection.default.host = localhost remote.connection.default.port = 8080. Ich habe auch einen Link zum Schnellstart für ejb-remoting von wildfly hinzugefügt. Es ist nicht für CR 1, sollte aber funktionieren (funktioniert bei mir nach dem Update der Versionen in pom auf 8.0.0.CR1 ) –
mcmil
Leider funktioniert es nicht. Ich habe Sicherheitsbereich und Domäne wie von Ihnen vorgeschlagen angegeben. In Domäne: Remoting habe ich ' '. Ihre Version verursacht einen Serverabsturz beim Start. Dann füllte ich jboss-ejb3.xml und jboss-ejb-client.properties wie Sie vorgeschlagen hatten und hinterließen nur 'java.naming.factory.url.pkgs = org.jboss.ejb.client.naming' und' java.naming. factory.initial = org.jboss.naming.remote.client.InitialContextFactory'. Jetzt habe ich eine Ausnahme bei der Kontextinitialisierung –
Kaskader