문제

나는 웹 서비스에 아주 익숙하지 않으므로 친절하게 해주세요.

간단한 pojo 클래스를 작성하고 Axis2 서버에 배포했습니다.

public class Database {

    private Project project;

    public void login(){
        project = new Project();
        project.setDescription("Hello there");
        project.setName("To me");
    }

    public Project getProject(){
        return project;
    }

}

AC# Client에서 서비스를 호출합니다.

localhost.Database db = new WindowsFormsApplication1.localhost.Database();
db.login();

localhost.getProjectResponse pr = new WindowsFormsApplication1.localhost.getProjectResponse();

pr = db.getProject();

디버깅 할 때 응답이 null입니다. Java End에서 GetProject를 호출하면 프로젝트 객체가 NULL입니다.

무슨 일이야? 서비스 통화 사이의 프로젝트 상태를 어떻게 보존합니까?

도움이 되었습니까?

해결책

대부분의 툴킷의 경우 웹 서비스는 기본적으로 무국적입니다. 나는 축이 다르지 않다고 생각합니다.

통화 간 상태를 유지하려면 세션을 활성화해야합니다. 축에서 세션을 유지하는 방법에 대한 예는 다음에서 찾을 수 있습니다.

http://kickjava.com/src/test/session/testsimplessess.java.htm

.NET 측면에서는 Session 식별자를 저장하려는 요청에 CookieContainer를 할당해야합니다. 보다 방법 : CookieContainer를 사용하여 웹 서비스에서 상태를 유지합니다. 자세한 내용은.

나는 당신의 코드가 다음과 같이 보일 것이라고 생각합니다.

localhost.Database db = new WindowsFormsApplication1.localhost.Database();
// Assign the CookieContainer to the proxy class.  
db.CookieContainer = new System.Net.CookieContainer();

db.login();

localhost.getProjectResponse pr = new WindowsFormsApplication1.localhost.getProjectResponse();
pr.CookieContainer = db.CookieContainer;

pr = db.getProject();


나는 그것이 당신이 원하는 것을 할 수 있어야한다고 생각합니다. 그러나 나는 그것을 추천하지 않을 것입니다.

서비스 인터페이스 설계는 객체 지향 인터페이스를 설계하는 것과 약간 다릅니다. 서비스 인터페이스는 일반적으로 상태 사용을 피하고 대신 소비자가 요청에 모든 관련 정보를 제공하도록 요구합니다.

에서 서비스 지향 아키텍처:

서비스는 독립적이고 자체 포함 된 요청이어야하며, 구현시 한 요청에서 다른 요청으로 정보 나 상태가 필요하지 않습니다.

나는 그 기사를 읽고 당신의 디자인을 다시 방문하는 것이 좋습니다.

다른 팁

@shivaspk가 답을 쓰지 않고 댓글을 남긴 이유를 잘 모르겠습니다. 웹 서비스 호출 (Axis Call만이 아니라)이 무국적이므로 프로젝트 객체가 생성됩니다.

db.login();

전화 할 때

db.getProject();

두 번째 호출을 서비스하기 위해 축에 의해 생성 된 데이터베이스 클래스의 다른 인스턴스에서 호출됩니다.

당신이하려는 일을 다시 생각하는 것을 제외하고는 당신의 질문에 대한 좋은 대답이 없습니다. 로그인을 통해 어떤 종류의 인증이 필요한 경우, 해당 인증은 모든 웹 서비스 호출의 일부가되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top