4
내가 유지하는 프로젝트는 소스 코드를 생성하기 위해 axis-maven-plugin을 사용합니다. 이 소스 코드는 PDF 생성기 서비스 호출에 사용됩니다.Axis 생성 코드에서 하드 코드 된 URL을 피하는 방법은 무엇입니까?
그러나 서비스에 대한 URL은 생성 된 Java 코드에 하드 코딩되어 있습니다.
public class GenerateReportServServiceLocator
extends org.apache.axis.client.Service
implements com.company.GenerateReportServService
{
// ...
// Use to get a proxy class for GenerateReportServ
private java.lang.String GenerateReportServ_address =
/* Hardcoded URL */ "http://host:port/PdfEngine/GenerateReportServ.jws";
// ...
}
url을 찾기 위해 등록 정보 구성 파일을 사용하도록 axis-maven-plugin에 어떻게 지시 할 수 있습니까?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<urls>
<url>http://host:port/PdfEngine/GenerateReportServ.jws</url>
</urls>
<packageSpace>com.company.project.core.pdf.engine</packageSpace>
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
</configuration>
<dependencies>
// ...
</dependencies>
<executions>
<execution>
<id>generate-ws-service-impression</id>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
런타임시 엔드 포인트를 구성 할 수 있습니까? 왜 서비스 클라이언트를 프로비저닝하기 전에 포트에 엔드 포인트를 설정하는 유틸리티 유형을 제공하지 않는가? – McDowell
@McDowell 실제로 Axis에 의해 생성 된 코드에서 url은 다른 많은 장소에서 하드 코드됩니다. 응용 프로그램이 프로덕션으로 이동하고 W $ 이동 (예 : URL 변경)되면 응용 프로그램을 다시 컴파일하고 프로덕션으로 다시 배포해야합니다. 이렇게하면 ** 속성 파일의 장점 **이 사라집니다. Axis에 의해 생성 된 클래스를 신중하게 구성하거나 누락 된 ** 환경 독립성 **을 추가하기 위해 Axis 클래스에서 상속받은 사용자 정의 클래스를 만드는 두 가지 옵션이 있습니다. 어느 쪽이든, 그것은 단지 고통! – Stephan
해결 방법을 찾으셨습니까? 그건 그렇고, Axis의 문제라고 생각합니다. [Axis Tools Maven Plugin] (http://www.mojohaus.org/axistools-maven-plugin/)과 'wsdl2java'를 실행했을 때 같은 결과를 얻었습니다. Axis 1.4 바이너리 패키지. – watery