我正在尝试以"业务"方式重新编写我的旧应用程序.
所以,我有一个带登录模块的Swing客户端,我自己的服务器是从头开始创建的.客户端使用ssl证书加密到服务器的TCP连接(我检查服务器上的客户端证书和客户端上的服务器证书),然后服务器使用数据库来验证和授权用户.
现在我正在尝试使用WildFly 8 CR1托管的ejb.我想使用相同的客户端 - 服务器密钥对将Swing客户端连接到WildFly服务器,然后使用存储在MySQL数据源中的名称和凭据对用户进行身份验证.我还有存储在数据库中的角色,我想使用它们来配置客户端主体.
我有简单的基本EJB调用:
Context ctx = new InitialContext();
MyBeanRemote bean = (MyBeanRemote)ctx.lookup("AppName/module-0.0.1-SNAPSHOT/MyBean!my.app.MyBeanRemote");
ResultType result = bean.doSomething();
Run Code Online (Sandbox Code Playgroud)
我有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
java.naming.security.credentials=password@123
Run Code Online (Sandbox Code Playgroud)
我有基本的数据源配置
<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>
Run Code Online (Sandbox Code Playgroud)
上面的一切都很好.
我已经阅读了一些指南,但仍然没有找到一个描述如何使用复合:EJB(不是web)+ WildFly 8(不是JBoss 7)+ SSL加密+通过数据源验证和授权登录客户端模块
任何帮助将不胜感激.
对不起我的英语,我经常用这种语言阅读,而不是写:)
我面临一些lambda问题.
我正在尝试使用lambda表达式和函数接口来创建接受函数接口和一些参数并执行该函数的方法.
这是我的代码:
@FunctionalInterface
interface TwoArgumentFunction {
public <T, K, V> T doJob(K arg1, V arg2);
} //I know I've ommited return value in that case
class SomeClass {
<T, K, V> T runLongAction(TwoArgumentFunction action, K arg1, V arg2){
SwingWorker<T, Void> worker = new SwingWorker<T, Void>(){
@Override
protected T doInBackground() throws Exception {
{... some code ... }
return action.doJob(arg1, arg2);
}
@Override
protected void done(){
{... some code ... }
}
};
worker.execute();
try {
return worker.get();
} catch …Run Code Online (Sandbox Code Playgroud)