Windows 7 시스템에서 JBoss에서 실행되는 Adobe LiveCycle ES4 Server가 있습니다. 동일한 네트워크 내의 다른 Windows 컴퓨터에서 JBoss에서 실행되는 클라이언트를 설정하지만 아마도 최신 버전 (7.1.1) 일 것입니다. Adobe에서 제공 한 샘플 코드를 사용하여 RMI를 통한 연결을 테스트하려고하지만 오류가 발생합니다. 여기에 스택 추적은 다음과 같습니다JBoss에서 샘플 LiveCycle 코드를 실행하는 동안 RMI 오류가 발생했습니다.
여기14:57:40,226 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) Caused by: java.lang.ClassNotFoundException: org.jboss.proxy.ClientContainer from [Module "deployment.jboss-as-kitchensink-jsp.war:main" from Service Module Loader] (no security manager: RMI class loader disabled)
14:57:40,226 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
14:57:40,227 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
14:57:40,227 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source)
14:57:40,228 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.rmi.server.RMIClassLoader.loadClass(Unknown Source)
14:57:40,228 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source)
14:57:40,228 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
14:57:40,229 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readClassDesc(Unknown Source)
14:57:40,229 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
14:57:40,230 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readObject0(Unknown Source)
14:57:40,230 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
14:57:40,231 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readSerialData(Unknown Source)
14:57:40,231 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
14:57:40,231 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readObject0(Unknown Source)
14:57:40,232 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.io.ObjectInputStream.readObject(Unknown Source)
14:57:40,232 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at java.rmi.MarshalledObject.get(Unknown Source)
14:57:40,233 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
14:57:40,233 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:816)
14:57:40,234 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) ... 29 more
내 코드는 다음과 같습니다
protected void applyUsageRights() {
try {
//Set connection properties required to invoke LiveCycle
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://113.252.20.43:1099");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, MY_USER);
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, MY_PASSWORD);
//Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
//Create a ReaderExtensionsServiceClient object
ReaderExtensionsServiceClient reClient = new ReaderExtensionsServiceClient(myFactory);
//Retrieve the PDF document to which to apply usage rights
FileInputStream fileInputStream = new FileInputStream("C:\\sample.pdf");
Document inputPDF = new Document(fileInputStream);
//Create a UsageRight object and specify specific usage rights
UsageRights useRight = new UsageRights();
useRight.setEnabledDynamicFormFields(true);
useRight.setEnabledComments(true);
useRight.setEnabledFormFillIn(true);
useRight.setEnabledDigitalSignatures(true);
//Create a ReaderExtensionsOptions object
ReaderExtensionsOptionSpec reOptions = new ReaderExtensionsOptionSpec();
//Set the usage rights
reOptions.setUsageRights(useRight);
reOptions.setMessage("This is a Rights-Enabled PDF Document");
//Apply usage rights to a PDF document
Document rightsEnabledPDF = reClient.applyUsageRights(
inputPDF,
"RE2",
null,
reOptions);
//Create a new PDF file that represents the rights-enabled PDF document
File resultFile = new File("C:\\Adobe\\LoanUsageRights.pdf");
rightsEnabledPDF.copyToFile(resultFile);
}catch (Exception e) {
e.printStackTrace();
}
}
사람이 내가 잘못 뭘하는지 말해 줄래? REST를 사용하여 Workbench에서 만든 서비스에 액세스 할 수 있기 때문에 클라이언트 컴퓨터가 LiveCycle 서버에 액세스 할 수 있다는 것을 알고 있습니다 (클라이언트 컴퓨터의 브라우저에 URL Workbench를 잘라 붙여 넣음으로써). 내가 잘못된 EJB 포트를 사용하고 있기 때문입니까? 1099는 샘플 코드에 따라 기본값이지만 JNDI에 대해 많이 알지 못하고 올바른지 확인하는 방법을 모르겠습니다. 보안 설정과 관련이 있습니까?
감사합니다. 내 classpath에 jbossall-client.jar 파일을 가지고 있었지만, 분명히 classpath에없는 다른 jar 파일을 참조합니다. 한 번 jar 파일의 전체 폴더에 복사하면이 오류가 사라졌지만 다른 파일은 한 번에 한 단계 씩 튀어 나옵니다. – wlaem